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

Django - Passing Custom Form Parameters to modelfactory

我有一个像这样的 Django ModelForm:

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

...以及我尝试获取相应表单集的视图:

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 错误。有什么帮助吗?

Django 1.9 添加了一个 form_kwargs 参数,所以你应该可以这样做:

ContactPhoneFormSet = modelformset_factory(
    ContactPhone, ContactPhoneForm, extra=1, can_delete=True)
formset = ContactPhoneFormSet(form_kwargs={'contact_id': contact_id})