【问题标题】:django cannot import name 'Item'django 无法导入名称“项目”
【发布时间】:2016-11-29 05:50:01
【问题描述】:

运行成功的runserver后,
为了在 django 项目中创建超级用户,我将 app 目录中的 admin.py 更新为

from django.contrib import admin

from .models import Item

admin.site.register(Item)

通过运行以下

$: python manage.py createsuperuser; 我收到以下错误

errorlog pastebin

我是 django 和 python 的新手,我在其他帖子中阅读了有关循环导入的文章,但无法找出错误。

我已经从 Python and django youtube.

【问题讨论】:

  • 嗯,你有循环导入吗?如果没有看到您的模型文件,我们无法判断。另外请在您的问题中包含所有相关详细信息,不要链接到非现场。它使未来的用户更容易找到您的问题
  • 嗨@Nicarus,正如我在问题本身中所说的那样,我已经从stackoverflow的其他问题中阅读了有关循环导入的信息,因为我是这里的python新手,你能帮我找出解决方案吗。
  • 更新 manage.py 来做这件事听起来是个很糟糕的主意。
  • 这是我在 django 中的第一个项目。你能建议其他方式吗?顺便说一句,它在教程上工作得很好(给出了一个链接)。

标签: python django import


【解决方案1】:

您已在此评论中发现问题:

models.py : 从 django.db 导入模型

Item 不是 Django 自带的。您需要自己定义一个名为Item 的模型。我的猜测是你在你的教程中错过了一个非常重要的步骤(或者教程是错误的/缺少一个步骤)。但是,要让您的应用同时运行,请添加到 models.py:

from django.db import models


class Item(models.Model):
    pass

这应该允许您创建一个超级用户。请注意,此模型不执行任何操作。您要么必须找到教程中缺少的步骤,要么弄清楚它应该做什么。

【讨论】:

  • 感谢您的帮助。它现在正在工作。稍后我将介绍本教程中缺少的部分。
【解决方案2】:

不要更新manage.py

您的应用文件夹中必须有一个名为admin.py 的文件。 每当您创建新应用时,admin.py 会自动在您的应用目录中创建 (django-admin startapp your_app_name)

打开 admin.py: 将您的代码移入其中。

from django.contrib import admin

from .models import Item  # Make sure you update this properly.

admin.site.register(Item)

现在项目应该列在您的管理面板中。

PS:确保您的模型中没有循环导入。 您遇到的错误很可能是循环导入造成的。

【讨论】:

  • 抱歉打错了,我正在更新 admin.py。用相同的方式更新了问题。
  • @krishnakant 在这种情况下,最好看看你的 models.py 文件中有什么
  • 'from django.db import models class Item(models.Model): title = models.CharField(max_length=200) description = models.TextField() amount = models.IntegerField() ' models. py
  • @krishnakant 您是否正在将您的项目模型导入您的应用文件夹中 __ init __.py ?
  • 文件 init.py 为空。我没有导入任何东西
【解决方案3】:

您的manage.pymodels.py 在同一个目录中吗? from .models import Item 表示您正在尝试从同一个包(relative import)中导入 models,如果不是,那么您可能需要这样做(用您的实际应用名称替换 app):

from app.models import Item

另外,在manage.py 中注册admin 真的很糟糕。 Django 建议在您的应用程序的admin.py 文件中执行此操作。由于admin.pymodels.py 在同一个包中,它应该可以工作。检查django doc关于这个。

【讨论】:

  • 我刚刚查看了您视频中的链接,它甚至没有说您应该在manage.py中进行,它明确表示它在文件admin.py中。
  • 我正在更新 admin.py,用正确的文件名更新了问题。感谢您指出这一点。
  • 您在models.py 中有一个名为Item 的模型吗?你的应用中有__init__.py 文件吗?更改代码时是否重新启动了服务器?
  • 是的,我在 models.py 中有 'class Item(models.Model):' 以及我的应用中的 init.py 文件。我重新启动了服务器。
猜你喜欢
  • 2011-07-11
  • 2015-03-01
  • 2011-12-27
  • 2018-05-29
  • 2014-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多