我在 Django 项目(Django 1.11,Python 3.5)中定义了以下表单类,但是当我执行 python3 manage.py runserver
时,我收到一个
NameError: name 'month_names' is not defined
class MonthForm(forms.Form):
month_names = [
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'
]
MONTH_CHOICES = [(i + 1, month_names[i]) for i in range(len(month_names))]
month = forms.ChoiceField(choices=MONTH_CHOICES, label='Month',
widget=forms.Select())
我不明白为什么这行不通。我注意到,如果我将初始的 month_names
赋值移动到类定义之外,它就会起作用。任何解释将不胜感激。提前谢谢你。
最佳答案
表单
metaclass - DeclarativeFieldsMetaclass
- 不允许您在类上创建(并通过扩展绑定(bind))不是字段的任意对象(即 django.forms.fields.Field
的实例)。
您必须在 Form
子类之外声明这样的任意对象。
关于python - 为什么 Django 不承认我的类变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44991672/