在 Django Forms 的上下文中,我已经看到许多关于在同一页面上处理不同类型的form
的讨论(例如在同一页面上处理AForm
和BForm
(,但我试图弄清楚如何在页面上处理同一form
类的多个实例。
我能够正常显示表单,但是当POST
表单时,我不知道如何处理它们。
我也尝试使用Formset
s,并遇到了同样的问题(可以显示,但不知道如何处理POST
(。
所以我的问题来了:假设我在页面上显示同一Form
类的多个实例。提交这些表格后,我将如何处理POST
数据?
编辑:
formset
的问题是我有一个自定义表单,并且发现很难使用formset
来处理POST
数据。
编辑 2 - 根据@neverwalkaloner的回复提供更多细节。
这是我的表单类:
class QuestionForm(forms.Form):
def __init__(self, question, data=None, *args, **kwargs):
super(QuestionForm, self).__init__(*args, **kwargs)
choice_list = [x for x in question.get_answers_list()]
self.fields['answers'] = forms.ChoiceField(choices=choice_list,
widget=RadioSelect)
self.fields['answers'].label = question.content
我正在创建带有前缀的不同表单,如下所示:form = QuestionForm(question=question, prefix=prefix)
然后,像这样处理 POST 数据:form = QuestionForm(data=request.POST, question=question, prefix=prefix)
但是,这些表格不与上述方法绑定:(
您可以使用prefix
参数来初始化视图中的多个表单:
mother = PersonForm(request.POST, prefix="mother")
father = PersonForm(request.POST, prefix="father")
return render(request, 'some_template.html', {
'mother': mother,
'father': father,
})