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

Django-循环模型导入问题

颛孙钱青
2023-03-14
问题内容

我真的没有得到这个,所以如果有人可以解释它是如何工作的,我将非常感激。我有两个应用程序,“帐户”和“主题” …这是我的设置列表:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'accounts',
    'themes',
)

在帐户中,我正在尝试执行以下操作:

from themes.models import Theme

class Account(models.Model):
    ACTIVE_STATUS = 1
    DEACTIVE_STATUS = 2
    ARCHIVE_STATUS = 3
    STATUS_CHOICES = (
        (ACTIVE_STATUS, ('Active')),
        (DEACTIVE_STATUS, ('Deactive')),
        (ARCHIVE_STATUS, ('Archived')),
    )

    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=250)
    slug = models.SlugField(unique=True, verbose_name='URL Slug')
    status = models.IntegerField(choices=STATUS_CHOICES, default=ACTIVE_STATUS, max_length=1)
    owner = models.ForeignKey(User)
    enable_comments = models.BooleanField(default=True)
    theme = models.ForeignKey(Theme)
    date_created = models.DateTimeField(default=datetime.now)

在我的主题模型中:

class Theme(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=250)
    slug = models.SlugField(unique=True, verbose_name='URL Slug')
    date_created = models.DateTimeField(default=datetime.now)

class Stylesheet(models.Model):
    id = models.AutoField(primary_key=True)
    account = models.ForeignKey(Account)
    date_created = models.DateTimeField(default=datetime.now)
    content = models.TextField()

Django踢出以下错误:

from themes.models import Theme
ImportError: cannot import name Theme

这是某种循环进口问题吗?我尝试使用一个懒惰的引用,但这似乎也不起作用!


问题答案:

删除的导入,Theme并将模型名称用作字符串。

theme = models.ForeignKey('themes.Theme')


 类似资料:
  • 问题内容: 我开始在一个小型的足球联赛管理网站上工作(主要是出于学习目的),我无法确定Django模型的关系。为了简单起见,假设我有两种类型的对象-玩家和团队。自然,一个玩家属于一个团队,因此在Player模型中就是一个ForeignKey(Team)。所以我去: 然后,我希望每个团队都有一个队长,该队长将是其中一名球员,因此在团队模型中将成为一名ForeignKey(Player)。但这会产生循

  • 问题内容: 所以我得到这个错误 并且你可以看到我进一步使用了相同的import语句,并且可以正常工作吗?关于循环导入是否有一些不成文的规定?如何在调用堆栈的更下方使用同一类? 问题答案: 我认为jpmc26的答案虽然绝非错误,但在循环进口上却过于严格。如果正确设置它们,它们可以正常工作。 最简单的方法是使用语法,而不是。前者几乎总是可以工作,即使包括在内也能使我们重新获得利益。后者只有在中已经定义

  • 问题内容: 如果两个模块相互导入会怎样? 为了概括这个问题,Python中的循环导入又如何呢? 问题答案: 导入确实非常简单。只要记住以下几点: 和是可执行语句。它们在运行的程序到达该行时执行。 如果模块不在中,则导入将在中创建新的模块条目,然后在模块中执行代码。在执行完成之前,它不会将控制权返回给调用模块。 如果中确实存在一个模块,则无论导入是否完成执行,导入都会简单地返回该模块。这就是循环导入

  • 问题内容: 这是输出: 这是模板: 但是模板中的循环不起作用。什么都没有出现。它甚至没有给我一个错误。我怎样才能解决这个问题?应该显示姓氏和名字,像这样: 问题答案: 完成插入新值后,可以通过禁用defaultdict的默认功能来避免复制到新dict : 说明 将在Django模板变量解析算法将尝试解析为第一,使用时其解析为一个空列表(列表)。 要禁用默认列表为空列表并让Django失败,n然后继

  • 问题内容: 我有一些CSV数据,我想使用示例CSV数据导入django模型: 我有一些名为Product的django模型。在产品还有像一些领域,和。我想要这样的东西: 问题答案: 你想使用python语言中的csv模块,并且应该使用Django的get_or_create方法 在我的示例中,模型老师具有三个属性first_name,last_name和middle_name。

  • 问题内容: 我正试图将我的大班分成两部分;好吧,基本上是进入“主”类和具有其他功能的mixin的,就像这样: 文件: 文件: 现在,尽管这很好,但类型提示当然不起作用。我无法导入,因为会进行周期性导入,并且没有提示,我的编辑器(PyCharm)无法分辨出什么。 我正在使用Python 3.4,如果那里有解决方案,我愿意移至3.5。 有什么办法可以将我的班级分成两个文件并保留所有“连接”,以便我的I