Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django循环模型依赖关系_Python_Database_Django_Database Design_Django Models - Fatal编程技术网

Python Django循环模型依赖关系

Python Django循环模型依赖关系,python,database,django,database-design,django-models,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

我在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')
上市模式

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:“收藏夹” 与model listings.models.Listing具有m2m关系,后者具有 未安装或是抽象的。listings.listing:'所有者' 与model users.models.User有关系,后者没有 已安装或是抽象的

如何在不牺牲已建立的关系的情况下解决此问题?

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

有关更多信息,请参阅。

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

列表.列表
用户.用户
。案例仍然很重要。谢谢,答案更新以匹配文档。。。但我很困惑,因为它在Django 1.4.2上。也许是虫子吧?哇,谢谢,真管用。这是Django特有的,还是Python通常允许您通过包而不是其父模块取消对类的引用?这是Django特有的。但是你可以用