我的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有关系,它没有 已经安装或是抽象的。
如何在不牺牲既定关系的情况下解决这个问题?
答案 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