我正在创建一个表单,并希望添加一个动态参数,如下所示:
from django import forms
def get_quantity_choices(avail_qty):
return [(i, str(i)) for i in range(1, avail_qty)]
class QuantityForm(forms.Form):
def __init__(self, request, avail_qty, *args, **kwargs):
self.avail_qty_choices = get_quantity_choices(avail_qty)
quantity = forms.TypedChoiceField(
choices=avail_qty_choices,
coerce=int)
这样我就可以做这个
form = QuantityForm(request.POST, available_quantity)
其中available_quantity
是在我的应用程序中的其他地方动态生成的变量。
但我一直收到这个错误消息";未定义的名称available _qty_choices">
我做错了什么?
choices
不是这样工作的。在解释类时,在启动服务器时初始化类属性。它出现在__init__
方法下这一事实并不相关。
您可以让超级构造函数完成工作,然后更改quantity
字段的选择。最初,您可以将选项设置为空列表:
from django import forms
class QuantityForm(forms.Form):
quantity = forms.TypedChoiceField(choices=[], coerce=int)
def __init__(self, *args, avail_qty=None, **kwargs):
super().__init__(*args, **kwargs)
self.fields['quantity'].choices= get_quantity_choices(avail_qty)