2009-07-27 46 views
0

我想在modelformset中使用下面的表單類。它需要地圖參數並相應地自定義表單域。定製Django中的modelformset字段

class MyModelForm(forms.ModelForm): 
    def __init__(self, maps, *args, **kwargs): 
     super(MyModelForm, self).__init__(*args, **kwargs) 
     #customize fields here 

    class Meta: 
     model = MyModel 

我的問題是,如何在modelformset中使用此表單?當我使用表格參數(如下)傳遞它時,我收到一個異常。

MyFormSet = modelformset_factory(MyModel, form=MyModelForm(maps)) 

我懷疑這只是希望窗體類,如果是的話我怎麼打發參數映射到表?

+0

完全重複:http://stackoverflow.com/questions/622982/django-passing-custom-form-parameters-to-formset/ – 2009-07-27 13:12:14

回答

2

請記住,Django使用類定義作爲一種DSL來定義各種事情。因此,在期望類對象的地方實例化會破壞事物。

一種方法是創建自己的表單工廠。喜歡的東西:

def mymodelform_factory(maps): 
    class MyModelForm(forms.ModelForm): 
      def __init__(self, *args, **kwargs): 
       super(MyModelForm, self).__init__(*args, **kwargs) 
       #use maps to customize form delcaration here 
      class Meta: 
       model = myModel 
    return MyModelForm 

然後,你可以這樣做:

MyFormSet = modelformset_factory(MyModel, form=mymodelform_factory(maps)) 
+0

謝謝,我一直在尋找 – drjeep 2009-07-27 07:25:17