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})
我有一个像这样的 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})