繁体   English   中英

如何将参数传递给Django中的表单类?

[英]How to pass an argument to a form class in Django?

我想将产品ID传递给我的表单类,以便在我的数据库中创建一个包含该项目的表单。

我的表格:

class Order_form(forms.Form):
    def __init__(self, product_id,*args,**kwargs):

        self.add_option = forms.ModelMultipleChoiceField(widget = forms.CheckboxSelectMultiple, required = False, queryset=product.objects.get(id = product_id).add_option.all())
        super(Order_form,self).__init__(*args,**kwargs)

上面的表单没有创建任何东西,但这个表单正在创建我需要的东西。 但是,我需要动态传递product_id ,而不必将1作为id硬编码:

class Order_form2(forms.Form):
    add_option = forms.ModelMultipleChoiceField(widget = forms.CheckboxSelectMultiple, required = False, queryset=product.objects.get(id = 1).add_option.all())

PS:一切正常,感谢下面的回答和评论,现在我的表格看起来像那样

class Order_form(forms.Form):
    add_option = forms.ModelMultipleChoiceField(widget = forms.CheckboxSelectMultiple, required = False, queryset=None)
    def __init__(self, product_id,*args,**kwargs):
        super(Order_form, self).__init__(*args, **kwargs)
        self.fields['add_option'].queryset=product.objects.get(id = product_id).add_option.all()

这大致应该是它的样子。

class Order_form(forms.Form):
    def __init__(self, product_id,*args,**kwargs):
        super().__init__(product_id, *args, **kwargs) # This is the default stuff that forms.Form does

         # You need to add this part so that it edits the field after creation
        self.fields['add_option']= forms.ModelMultipleChoiceField(widget = forms.CheckboxSelectMultiple, required = False, queryset=product.objects.get(id = product_id).add_option.all())
        # super(Order_form,self).__init__(*args,**kwargs) this  would re-overwrite it so we don't want it here

这通常是在django中完成的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM