在Django Forms的上下文中,我已经看到很多讨论在同一页面上处理不同类型的form
(例如,同一页面上的AForm
和BForm
),但我试图弄清楚如何处理页面上同一form
类的多个实例。
我可以正常显示表单,但是不知道POST
表单如何处理。
我也尝试过使用Formset
,并且有相同的问题(可以显示,但不知道如何处理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)
但是,表格不与上述方法绑定:(
答案 0 :(得分:2)
您可以使用prefix
参数在视图中初始化多种形式:
mother = PersonForm(request.POST, prefix="mother")
father = PersonForm(request.POST, prefix="father")
return render(request, 'some_template.html', {
'mother': mother,
'father': father,
})