2011-08-22 41 views

回答

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) 
1

Matthew Flanagan有package of things for Django,在那個包中是RequireOneFormset類。你可以很容易地擴展這個類來需要3個形式,而不是一個。

希望能幫助你。

2

我用這樣的內聯表單集:

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

相關問題