Django - 一个视图中同一表单类的多个实例



在 Django Forms 的上下文中,我已经看到许多关于在同一页面上处理不同类型的form的讨论(例如在同一页面上处理AFormBForm(,但我试图弄清楚如何在页面上处理同一form类的多个实例。

我能够正常显示表单,但是当POST表单时,我不知道如何处理它们。

我也尝试使用Formsets,并遇到了同样的问题(可以显示,但不知道如何处理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,
})

最新更新