假设我有这样的表格:
class GeneralForm(forms.Form):
field1 = forms.IntegerField(required=False)
field2 = forms. IntegerField(required=False)
我想在一个表单标签内的页面上显示两次,每次使用不同的前缀,例如:
rest of page ...
<form ..>
GeneralForm(data,prefix="form1").as_table()
GeneralForm(data,prefix="form2").as_table()
<input type="submit" />
</form>
rest of page ...
当用户提交这个时,我如何将提交的表单重新分成两个单独的表单进行验证,然后重新显示?
This was the only documentation我能找到,而且很饿。
最佳答案
您像往常一样处理每个表单,确保创建的实例与最初用于生成表单的实例具有相同的前缀。
这是使用您提供的表格的一个稍微尴尬的示例,因为我不知道确切的用例是什么:
def some_view(request):
if request.method == 'POST':
form1 = GeneralForm(request.POST, prefix='form1')
form2 = GeneralForm(request.POST, prefix='form2')
if all([form1.is_valid(), form2.is_valid()]):
pass # Do stuff with the forms
else:
form1 = GeneralForm(prefix='form1')
form2 = GeneralForm(prefix='form2')
return render_to_response('some_template.html', {
'form1': form1,
'form2': form2,
})
这里有一些真实的示例代码,演示了使用前缀处理表单:
http://collingrady.wordpress.com/2008/02/18/editing-multiple-objects-in-django-with-newforms/
关于python - Django Forms - 如何使用前缀参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/226510/