Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 为forms.Form\uu init添加其他初始化参数___Django_Django Forms - Fatal编程技术网

Django 为forms.Form\uu init添加其他初始化参数__

Django 为forms.Form\uu init添加其他初始化参数__,django,django-forms,Django,Django Forms,我正在创建一个表单,并希望添加一个动态参数,如下所示: 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):

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

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\u quantity
是在我的应用程序的其他地方动态生成的变量

但我一直收到这个错误消息“未定义的名称可用数量选择”


我做错了什么?

这不是
选项的工作方式。当您启动服务器时,在解释类时初始化类属性。它出现在
\uuuu init\uuu
方法下的事实并不相关

您可以让超级构造函数完成这项工作,然后更改
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)
来自django导入表单的

类QuantityForm(forms.Form):
quantity=forms.TypedChoiceField(选项=[],强制=int)
定义初始值(self,*args,avail\u qty=None,**kwargs):
super()

self.fields['quantity'].choices=获取数量选择(avail数量)
谢谢。我试过你推荐的方法。它起作用了。但是设置
self.fields['quantity'].choices=get\u quantity\u choices(avail\u quantity)
会给我一个错误
int对象没有属性'get'
。但更改为该选项将有效
self.fields['quantity']=forms.TypedChoiceField(选项=get\u quantity\u选项(avail\u quantity),强制=int)