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

时间:2018-06-26 04:14:46

标签: python django forms post django-forms

在Django Forms的上下文中,我已经看到很多讨论在同一页面上处理不同类型的form(例如,同一页面上的AFormBForm),但我试图弄清楚如何处理页面上同一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)

但是,表格不与上述方法绑定:(

1 个答案:

答案 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,
})