[英]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.