所以我试图建立一个Django表单,我想使用Django Choicefield。现在,对于choicefield,您必须为其提供选择,它实际上是一个元组列表。
我正在尝试使用在 init ()中声明的self.locales_allowed代替类变量locales_allowed。
class XXX(forms.Form):
def init(self):
self.locales allowed = XX
locale = forms.ChoiceField(
label=label["locale"], choices=locales_allowed, required=True)
#How to use self.locales_allowed here?
如果我尝试这样做,我会不断得到NameError: name 'self' is not defined
。我正在寻找一种方法来完成此任务。
答案 0 :(得分:2)
直接的回答是“你不能”。但是,这里不需要使用实例变量进行选择,而只需使用没有self
概念的类变量即可:
class MyForm(forms.Form):
LOCALES_ALLOWED = ...
locale = forms.ChoiceField(
label=label["locale"], choices=LOCALES_ALLOWED, required=True)
我将LOCALES_ALLOWED
大写,因为这是Python中常量的约定,但实际上不是必需的。这里的关键是您不需要实例变量,因为对于您创建的每个实例,选择都是相同的。