Django循环模型依赖

时间:2012-11-25 18:45:49

标签: python database django database-design django-models

我的Django模型中存在循环依赖,因此模型A具有对B的外键引用,而B具有对A的多对多引用。我已查阅其他SO帖子并使用了字符串模型名称而不是实际的类,但无济于事。这是我的两个类的缩写版本:

用户模型

import listings.models

class User(models.Model):
    ...
    favorites = models.ManyToManyField('listings.models.Listing')

列出模型

import users.models

class Listing(models.Model):
    ...
    owner = models.ForeignKey('users.models.User')

每次尝试运行 syncdb 时,都会输出以下错误:

  

错误:一个或多个模型未验证:users.user:'favorites'   与模型listing.models.Listing有一个m2m的关系,它有   要么没有安装,要么是抽象的。 listing.listing:'所有者'   与模型users.models.User有关系,它没有   已经安装或是抽象的。

如何在不牺牲既定关系的情况下解决这个问题?

2 个答案:

答案 0 :(得分:9)

  • 'listings.models.Listing'应为'listings.Listing'
  • 'users.models.User'应为'users.User'(如果您使用'auth.User',则为django.contrib.auth.models.User

有关详情,请参阅official documentation

答案 1 :(得分:0)

您可以删除导入,因为您不依赖于代码。你只使用带有模型名称的字符串 - 它不是依赖项。 您还应该从字符串中删除models - 因为您可以将您的模型称为app_name.model_name