为窗体添加其他初始化参数.表格__init__



我正在创建一个表单,并希望添加一个动态参数,如下所示:

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)

最新更新