我使用通用外键将不同的配置文件与继承自Users
的{{1}}模型相关联。虽然通过了auth.User
选项,但我无法执行dumpdata
。它说,
错误:无法解析序列化应用列表中myproject.AdminProfile,myproject.TeacherProfile,myproject.Users的依赖项。
根据documentation,据说我们需要实施natural_key methods来获取和闪现涉及通用关系的装置。我怎么能用我在这里展示的模型呢?
--natural
使用Django 1.4.3和Postrgres。
答案 0 :(得分:7)
您的问题似乎与缺乏自然关键方法无关。我使用SQLite在Django 1.4和1.2.5上测试了[原始]代码,并且能够使用自然键转储数据而没有错误。
经过一些搜索后,我发现当模型之间存在循环依赖关系(包括具有自引用的模型)时会出现此问题。正如您的更新代码所示,Users
模型中存在自引用,因此问题就在于此。这个错误是在Django 1.3中引入的,尽管是already fixed,但它在稳定版本中仍然不可用AFAIK(测试高达1.4.3)。但是,在测试版(1.5b2)中,您的代码工作正常。
如果使用测试版(或降级到1.2)不是一个选项,那么您唯一的解决方案可能是创建另一个模型。类似的东西:
class CreatedBy(models.Model):
creator = models.ForeignKey(Users, related_name="created_by_user")
created = models.ForeignKey(Users, unique=True, related_name="created_by")
答案 1 :(得分:0)
更普遍的问题(涉及自然键的循环依赖关系,而不仅仅是具有自然键的自引用)是一个开放的错误,并在此处报告:https://code.djangoproject.com/ticket/31051