【问题标题】:Django "NameError: name 'Album' not defined"Django“名称错误:未定义名称‘专辑’”
【发布时间】: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

【问题讨论】:

    标签: python django database model-view-controller model


    【解决方案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 扩展,将其添加到已安装的应用程序中,现在可以让它工作了。
        猜你喜欢
        • 2022-01-01
        • 2021-04-02
        • 1970-01-01
        • 1970-01-01
        • 2015-01-28
        • 1970-01-01
        • 1970-01-01
        • 2019-09-09
        • 1970-01-01
        相关资源
        最近更新 更多