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“名称错误:未定义名称‘专辑’”的主要内容,如果未能解决你的问题,请参考以下文章
如何解决“未捕获的类型错误:无法读取未定义的属性'参数'”reactjs + django