Django“名称错误:未定义名称‘专辑’”

Posted

技术标签:

【中文标题】Django“名称错误:未定义名称‘专辑’”【英文标题】:Django "NameError: name 'Album' not defined" 【发布时间】:2017-12-13 11:17:27 【问题描述】:

我正在尝试运行查看和操作一个简单的 django 数据库,但来自 Django Shell 的错误是说我的模型之一未定义。

大多数与我的错误相似的问题是由于人们在声明模型之前引用了它。但是,我没有在 Album 中引用任何其他模型。

models.py

from __future__ import unicode_literals

from django.db import models


class Album(models.Model):
    artist = models.CharField(max_length=250)
    title = models.CharField(max_length=500)
    genre = models.CharField(max_length=100)
    logo = models.CharField(max_length=1000)


class Song(models.Model):
    album = models.ForeignKey(Album, on_delete=models.CASCADE)
    file_type = models.CharField(max_length=10)
    title = models.CharField(max_length=250)

我得到的错误: NameError: name 'Album' is not defined

知道这个错误的原因是什么吗?

作为参考,我正在关注newboston的django教程here。

【问题讨论】:

【参考方案1】:

你也可以用引号写专辑,这样看

album = models.ForeignKey("Album", on_delete=models.CASCADE)

这对我有用!

【讨论】:

【参考方案2】:

你应该这样尝试--

class Song(models.Model):
album = models.ForeignKey('app_name.Album', on_delete=models.CASCADE)
file_type = models.CharField(max_length=10)
title = models.CharField(max_length=250)

【讨论】:

【参考方案3】:

当你打开你的 shell 时,它只是一个 python shell,没有从你的应用中导入任何东西。

你应该先导入你的模型:

from your_app_name.models import Album

如果您不想每次都导入模型,请使用django-extensions,它将为您加载它们。使用shell_plus 命令:

python manage.py shell_plus

希望对你有帮助

【讨论】:

回复晚了,但感谢您的回复。我安装了 django 扩展,将其添加到已安装的应用程序中,现在可以让它工作了。

以上是关于Django“名称错误:未定义名称‘专辑’”的主要内容,如果未能解决你的问题,请参考以下文章

使用通用登录视图时出现“名称'django'未定义”错误?

如何解决“未捕获的类型错误:无法读取未定义的属性'参数'”reactjs + django

未定义 Django 自定义管理 url

Django 身份验证模型错误:未定义名称“用户”

Django“未配置设置”错误,无法定义环境变量 DJANGO_SETTINGS_MODULE

Django 和 jQuery 的困难(为啥在管理应用程序中 $ 未定义?)