任何人都可以幫助我這個。這個代碼有什麼問題,因爲只保存一個表單,那就是表單,但是bform不會被保存。我哪裏做錯了??django:兩種形式,但只有一種形式是節省
views.py
def customerView(request, **kwargs):
this_customer = customer.objects.get(id=kwargs['pk'])
if request.method == 'POST':
form = customerForm(request.POST, instance=this_customer)
bform = buildingForm(request.POST)
if form.is_valid() and bform.is_valid():
form.save()
bform.save()
else:
form = customerForm(instance=this_customer)
bform = buildingForm()
return render_to_response('customer.html',{'form':form, 'bform':bform,},
context_instance = RequestContext(request))
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
widgets = {'B_USE' : RadioSelectNotNull(),
'B_TYPE' : RadioSelectNotNull(),
}
編輯補充模板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....
<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>
沒有錯誤,指出存在錯誤編碼。 謝謝你的幫助。
你可以發佈你正在渲染表單的模板部分嗎? – 2013-04-23 15:07:08
您是否曾嘗試在'buildingForm'的'Meta'類中添加一個'fields'行,並在use/type的'widgets'選項中指定客戶/ floorspace/year小部件,而不是在字段構造函數中? – Mariano 2013-04-23 17:19:42
可能需要爲這兩種表單使用[前綴](https://docs.djangoproject.com/zh/dev/ref/forms/api/#django.forms.Form.prefix)。您需要在呈現空白表單時以及在從POST數據構建綁定表單時添加它。 – akotian 2013-04-23 19:16:46