7

我在我的 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' 与模型 listings.models.Listing 具有 m2m 关系,该模型尚未安装或是抽象的。Listings.listing:“所有者”与模型 users.models.User 有关系,该模型尚未安装或抽象。

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

4

2 回答 2

9
  • 'listings.models.Listing'应该'listings.Listing'
  • 'users.models.User'应该是'users.User'(或者'auth.User'如果你要使用django.contrib.auth.models.User

更多信息请参考官方文档

于 2012-11-25T18:49:56.343 回答
0

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

于 2012-11-25T18:57:28.987 回答