Django型号外键

Django型号外键,django,django-1.7,Django,Django 1.7,这是数据库模型的django1.7代码 我对这个代码有问题。 这是models.py文件 class Person(models.Model): person_id=models.AutoField(primary_key=True) person_name=models.CharField(max_length=100) person_family=models.CharField(max_length=100) person_father=models.For

这是数据库模型的django1.7代码 我对这个代码有问题。 这是models.py文件

class Person(models.Model):
    person_id=models.AutoField(primary_key=True)
    person_name=models.CharField(max_length=100)
    person_family=models.CharField(max_length=100)
    person_father=models.ForeignKey('Person')
    person_mother=models.ForeignKey('Person')
错误:

如果我删除其中一个->“个人母亲或个人父亲” 错误将会消失。
但当它们都处于代码错误状态时,就会发生错误

请阅读运行migrate(或尝试运行validate)时得到的提示:您需要将
相关的\u名称
kwarg添加到您的
外键
,如下所示:


person\u father=models.ForeignKey('person',related\u name='child\u from\u father')
person\u mother=models.ForeignKey('person',related\u name='child\u from\u mother')

您需要使用
related_name
,因为当Django遇到
ForeignKey
时,它将尝试在外键模型中添加反向关系字段。例如,如果您有一个
作者
模型和一个
书籍
模型,该模型在
作者
中有一个
外键
,django将在
作者
中添加一个
书籍集
反向关系管理器属性(以查询特定
作者
的所有
书籍


现在,在您的例子中,Django想在
person
中添加一个
person\u集,但是,因为您有两个
foreignkey
person
它不知道如何命名反向关系管理器属性。这就是它提示您使用
相关名称的原因。因此,使用
person\u-father
属性可以获得一个人父亲的查询集,而
person\u-mother
对母亲的查询集也是如此。

您的相关名称非常混乱。这些相关的名称表示“children”,因此可能“children\u from\u father”和“children\u from\u mother”也表示字段的确切名称。这不应该通过模型checks@Alvaro也许你是对的。。。我已经更改了它们,同意了-大多数时候我喜欢对字段名和相关的_名称使用相同的名称。但是,在这种情况下,这将不起作用(因为ForeignKey是同一型号的)很好!另一个问题:你从哪里知道django的确切情况?我是说像这样的问题!?