【问题标题】:Django - Passing Custom Form Parameters to modelfactoryDjango - 将自定义表单参数传递给模型工厂
【发布时间】:2023-03-20 23:11:01
【问题描述】:

我有一个这样的 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 django-forms formsets


    【解决方案1】:

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

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

    【讨论】:

    猜你喜欢
    • 2010-11-15
    • 2010-10-12
    • 2014-08-23
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2011-11-10
    相关资源
    最近更新 更多