2009-07-27 42 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