为什么Django不会承认我的类变量?

时间:2017-07-08 23:32:23

标签: python django

我在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赋值移到类定义之外,那么它就可以了。任何解释将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:1)

Form metaclass - DeclarativeFieldsMetaclass - 不允许您创建(并通过扩展,绑定)非字段的任意对象(即django.forms.fields.Field的实例)在课堂上。

您必须在Form子类之外声明此类任意对象。