我很難將表單保存到數據庫中。每次點擊保存它都不會保存在db/admin中。似乎無法弄清楚。我希望有人能幫助我。django:當在一個模板中使用兩個模型和兩個表單時,數據不會保存在數據庫中
此項目是爲了收集新客戶對公司信息化建設;如果客戶在數據庫中存在,那麼它會查看特定客戶的細節,並在需要的時候能夠編輯特定客戶,並能保存時覆蓋數據。該信息從客戶模型和建築模型以及customerForm和buildingForm收集並顯示在客戶模板中。
models.py
class customer(models.Model)
F_NAME = models.CharField(max_length = 50)
L_NAME = models.CharField(max_length = 50)
ADD = models.CharField(max_length = 60, blank =True)
EMAIL = models.EmailField()
def __unicode__(self):
return '%s' % (self.F_NAME)
class building(models.Model):
CUSTOMER = models.ForeignKey(customer)
B_USE = models.CharField(max_length = 2, blank = True, choices = c.Use)
B_FLOORSPACE = models.IntegerField(default=0)
B_YEAR = models.IntegerField(null = True, blank = True)
B_TYPE = models.CharField(max_length = 2, blank = True, choices = c.Type)
def __unicode__(self):
return '%s' % (self.B_USE)
forms.py
class customerForm(ModelForm):
F_NAME = forms.CharField(widget=forms.TextInput(attrs={'size':'34'}))
L_NAME = forms.CharField(widget=forms.TextInput(attrs={'size':'34'}))
EMAIL = forms.CharField(widget=forms.TextInput(attrs={'size':'19'}))
ADD = forms.CharField(widget=forms.TextInput(attrs={'size':'34'}))
class Meta:
model = customer
class buildingForm(ModelForm):
CUSTOMER = forms.CharField(widget=forms.TextInput(attrs={'size':'20'}))
B_FLOORSPACE = forms.CharField(widget=forms.TextInput(attrs={'size':'4'}))
B_YEAR = forms.CharField(widget=forms.TextInput(attrs={'size':'4'}))
class Meta:
model = building
exclude = ('CUSTOMER',)
widgets = {'B_USE' : RadioSelectNotNull(),
'B_TYPE' : RadioSelectNotNull(),
}
views.py
def customerView(request ,**kwargs):
context ={}
try:
this_customer = customer.objects.get(id = kwargs ['pk'])
except:
this_customer = customer.objects.create(id = kwargs['pk'])
try:
bform = buildingForm(instance=building())
context['build']=True
context['bform']=bform
except:
context['build']=False
form = customerForm(instance=this_customer)
context['form']= form
if request.method == 'POST':
form = customerForm(request.POST, instance = customer())
bform = [buildingForm(request.POST, prefix = str(x), instance = building()) for x in range (0,3)]
if form.is_valid() and all ([bf.is_valid() for bf in bform]):
new_customer = form.save()
for bf in bform:
new_build = bf.save(commit = False)
new_build.CUSTOMER = new_customer
new_build.save()
return HttpResponseRedirect('customer.html')
else:
form = customerForm(instance=customer())
bform = [buildingForm(prefix=str(x), instance=building())for x in range(0,3)]
return render_to_response('customer.html',{'customer_form':form, 'build_form':bform}, context_instance = RequestContext(request))
customer.html
<form action="" method="post">
<button type="submit" name="customer">Save</button>
{% csrf_token %}
{{ form.id }}
...more code...
<table>
<tr><td><div>First Name</div>{{ form.F_NAME }}</td></tr>
<tr><td><div>Last Name</div>{{ form.L_NAME }}</td></tr>
</table>
....more code....
{% if build %}
...more code....
<table>
<tr><td><div>Build Use</div></td><td>{{ bform.B_USE }}</td>
<td><div>Build Space</div></td><td>{{ bform.B_FLOORSPACE }}</td>
</tr>
...more code...
</form>
我嘗試在單一的形式在多個型號進入這個演示 http://collingrady.wordpress.com/2008/02/18/editing-multiple-objects-in-django-with-newforms/ 和 Django: multiple models in one template using forms 和 How to use two different Django Form at the same template? ,但不能看到那裏的錯誤是。我的任務現在非常簡單,我只需保存所有已輸入並保存在數據庫中的信息。
答覆。我想你是對的。這是我的問題,我看不到任何錯誤,我不知道從哪裏開始測試。當我點擊保存在HTML上它似乎像刷新,但當我檢查數據庫/管理沒有發生......但是當我從管理員輸入,然後我可以把數據出我的HTML ... :(你能幫我要檢查或查看什麼?謝謝你 – noobes