使用modelformset_factory时如何在django中区分formset?

时间:2016-08-23 14:46:20

标签: python django django-forms django-templates django-views

假设我有一个Contact对象,我希望在django(1.8)中有两组联系人Formsets在html模板中除以 fieldset 标记。我使用modelformset_factory。无论我使用一个或两个不同的工厂函数,这两个formset中的字段在html中具有相同的id。由于http.Request.body是字典,我丢失了关于两个表单集之一的信息。

contacts_formset = modelformset_factory(
  models.Contact,
  form=forms.ContactDetailForm,
  extra=2)

contacts_escalation_formset_new = contacts_formset(
    queryset=models.Contact.objects.none())

contacts_other_formset_new = contacts_formset(
    queryset=models.Contact.objects.none())
HTML中的

input id="id_form-0-name" maxlength="155" name="form-0-name" type="text"
input id="id_form-0-name" maxlength="155" name="form-0-name" type="text"

对于简单的django形式,有关键字“prefix = ...”。但是这个工厂函数没有这个论点。我该如何解决?

1 个答案:

答案 0 :(得分:2)

modelformset_factory类返回一个FormSet类。此FormSet类具有可选的prefix参数,类似于Form类。

contacts_escalation_formset_new = contacts_formset(
    prefix='escalation',
    queryset=models.Contact.objects.none(),
)

contacts_other_formset_new = contacts_formset(
    prefix='other'
    queryset=models.Contact.objects.none(),
)

有关其他示例,请参阅using more than one formset in a view上的文档。