在具有3个表单副本的modelformset中,如何指定只需要第一个集合,但其余部分可以为空或空?
答案 0 :(得分:2)
我使用了类似这样的内联formset:
class BaseSomethingFormset(BaseInlineFormSet):
def __init__(self, *args, **kwargs):
super(BaseSomethingFormset, self).__init__(*args, **kwargs)
self.forms[0].empty_permitted = False
self.forms[0].required = True
表单字段必须默认设置为required=False
答案 1 :(得分:1)
Matthew Flanagan有一个package of things for Django,在那个包中是RequireOneFormset类。您可以轻松地将此类扩展为需要3个表单而不是一个。
希望能帮到你。
答案 2 :(得分:0)
您可以将BaseModelFormSet
子类化,以便修改第一个表单并使其成为必需:
from django.forms.models import BaseModelFormSet
class OneRequiredFormSet(BaseModelFormSet):
def _construct_form(self, i, **kwargs):
f = super(OneRequiredFormSet, self)._construct_form(i, **kwargs)
if i == 0:
f.empty_permitted = False
f.required = True
return f
然后,您可以使用formset
关键字参数告诉modelformset_factory
使用您的新课程:
from django.forms.models import modelformset_factory
ParticipantFormSet = modelformset_factory(Participant, extra=1,
form=ParticipantForm,
formset=OneRequiredFormSet)