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

标签 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 赋值移动到类定义之外,它就会起作用。任何解释将不胜感激。提前谢谢你。

最佳答案

表单 metaclass - DeclarativeFieldsMetaclass - 不允许您在类上创建(并通过扩展绑定(bind))不是字段的任意对象(即 django.forms.fields.Field 的实例)。

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

关于python - 为什么 Django 不承认我的类变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44991672/

相关文章:

python - 为什么 gunicorn 使用相同的线程

python - 使用 gdal 打开 geotiff 会产生 AttributeError : __exit__

javascript - 在 django 模板中嵌入 javascript 代码

python - Django ORM - 将原始值分配给 DecimalField

python - 在 django 中使用 doraptor 生成 Pdf

Python加入日期和文件名

python - SQLalchemy from_statement() 找不到列

python - 如何在 Python 中创建 IntPtr?

python - 在 Django 中,如何通过单个表单提交同时创建用户和用户配置文件

django - DRF + React Session auth 可用吗?