当前位置: 首页 > 面试题库 >

Django无法导入名称x

崔宇
2023-03-14
问题内容

我有一个我不明白的错误!

无法导入名称项目

在我的模型中,我有项目。这些项是操作所必需的。但是其中一些项目会影响操作:

项目

from django.db import models
from effects.models import Effect

class Type(models.Model):
    name = models.CharField(max_length=200)

    def __unicode__(self):
         return self.name

class Item(models.Model):
    name = models.CharField(max_length=200)
    description = models.CharField(max_length=200)
    type = models.ForeignKey(Type)
    quality = models.IntegerField()
    effects = models.ManyToManyField(Effect,through='ItemEffect',blank=True)
    item_requirement = models.ManyToManyField('self',through='ItemCraft',symmetrical=False,blank=True)
points = models.IntegerField()

    def __unicode__(self):
        return self.name

class Food(Item):
    ap = models.IntegerField()

class Tool(Item):
    durability = models.IntegerField()

[....]

class ItemEffect(models.Model):
    item = models.ForeignKey(Item)
    effect = models.ForeignKey(Effect)

def __unicode__(self):
    return self.item.name+':'+str.lower(self.effect.name)

class Meta:
    verbose_name_plural = 'items effects'

class ItemCraft(models.Model):
    item = models.ForeignKey(Item,related_name='%(class)s_item_crafted')
    item_requirement = models.ForeignKey(Item,related_name='%(class)s_item_required')
    number = models.IntegerField()

    def __unicode__(self):
        return self.item.name+' requires '+str.lower(self.item.name)+'('+self.number+')'

    class Meta:
        verbose_name_plural = 'items crafts'

行动

from django.db import models
from items.models import Item

class Action(models.Model):
    name = models.CharField(max_length=200)
    description = models.CharField(max_length=200)
    pa = models.IntegerField()

    def __unicode__(self):
        return self.name

class CraftAction(Action):
    item = models.ForeignKey(Item)

    def __unicode__(self):
        return self.item.name+'\'s craft'

    class Meta:
        verbose_name_plural = 'crafts actions'

效果

from django.db import models
from actions.models import Action

class Effect(models.Model):
    action = models.ForeignKey

class ApEffect(Effect):
    ap = models.IntegerField()

问题答案:

你的代码中有循环导入,这就是为什么无法实际导入Item的原因。

你可以通过删除其中一个文件中的类导入并将其替换为包含该类名称的字符串来解决该问题。例如 :

effects = models.ManyToManyField('effects.Effect',through='ItemEffect',blank=True)


 类似资料:
  • Django taggit在Django 3.0中不起作用,它在Django-2.2等早期版本中工作良好。因为它依赖于django没有的六个库。3.0中的utils

  • 嗨,有人能帮我解决'重要错误:不能导入名称网址'的问题吗?我已经按照教程在这里https://docs.djangoproject.com/en/1.9/intro/tutorial01/ 我尝试了另一个教程https://docs.djangoproject.com/zh-hans/2.0/ref/urls/#django.urls.include 但是他们都不工作我的Django版本是1.11

  • 问题内容: 我有两个文件, app.py mod_login.py 而python返回此错误: 如果删除from app import app,代码将起作用,但是如何访问? 问题答案: 问题是你有一个循环导入:在app.py中 在mod_login.py中 这在Python中是不允许的。有关更多信息,请参见Python中的循环导入依赖项。简而言之,解决方案是 要么将所有内容收集到一个大文件中 使用

  • 发生此错误时,我的原始代码不包含“导入 resnet”。 似乎错误发生时,导入张量流。

  • 我正在尝试运行Buildroot(2017.02)的scanpypi脚本-支持脚本,但是我得到了ImportError:cannotimport name get_importer。 回溯(最后一次调用):文件“/support/scripts/scanpypi”,第52行,导入setuptools文件“/usr/local/lib/python2.7/dist-packages/setuptoo

  • 问题内容: 我正在尝试运行以下简单代码 但我收到以下错误 我正在Windows 10下使用python 2.7。 我已经安装了,但是似乎无法解决问题 任何帮助表示赞赏。 问题答案: 如果查看引起错误的行,则会看到以下内容: 该行注释将依赖项声明为(对于 Intel Math Kernel Library )。这意味着您已经安装了by ,但是the是由预编译的存档安装的,其期望值为。 通过从此处的w