Django - 将自定义表单参数传递给modelfactory

时间:2017-07-05 16:23:10

标签: django django-forms formsets

我有一个像这样的Django ModelForm:

class ContactPhoneForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(ContactPhoneForm, self).__init__(*args, **kwargs)
    #....

...以及我尝试获取相应formset的视图:

ContactPhoneFormSet = modelformset_factory(ContactPhone,
                                           ContactPhoneForm, 
                                           extra=1, 
                                           can_delete = True)

现在,我希望将另一个参数传递给表单的__init__方法:

 class ContactPhoneForm(forms.ModelForm):
        def __init__(self, contact_id, *args, **kwargs):    
            self.contact_id = contact_id
            super(ContactPhoneForm, self).__init__(*args, **kwargs)
        #....

我试图根据this post重写我的观点:

ContactPhoneFormSet = modelformset_factory(ContactPhone,
                                           wraps(ContactPhoneForm)(partial(ContactPhoneForm, contact_id=contact_id)), 
                                           extra=1, 
                                           can_delete = True)

但最终导致TypeError: the first argument must be callable错误。对此有何帮助?

1 个答案:

答案 0 :(得分:1)

Django 1.9添加了一个form_kwargs争论,所以你应该能够做到:

tmux new-window