在 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)
但是,表单不绑定(bind)上述方法:(
请您参考如下方法:
您可以使用 prefix在您的 View 中初始化多个表单的参数:
mother = PersonForm(request.POST, prefix="mother")
father = PersonForm(request.POST, prefix="father")
return render(request, 'some_template.html', {
'mother': mother,
'father': father,
})
