外键与Django Model中的相关字段发生冲突

时间:2013-10-29 17:39:54

标签: python django django-models many-to-many foreign-key-relationship

我正在研究一个模型类,它将代表一个家庭成员与另一个家庭成员的关系(一部分基因学特征)

我的班级是:

class FamilyLink(models.Model):
    from_legacy = models.ForeignKey(Legacy)
    to_legacy = models.ForeignKey(Legacy)

    class Meta:
        unique_together = ("from_legacy", "to_legacy")

当我尝试迁移时,收到以下错误消息:

  

CommandError:一个或多个模型未验证:archive.familylink:   字段'from_legacy'的访问者与相关字段发生冲突   'Legacy.familylink_set'。将related_name参数添加到定义中   为'from_legacy'。 archive.familylink:字段'to_legacy'的访问者   与相关字段'Legacy.familylink_set'发生冲突。添加related_name   “to_legacy”定义的参数。

似乎我的问题是在同一个类中有两个foreignKey都指向同一个类(在本例中是“Legacy”类)。有谁知道如何解决/解决这个问题?

我很欣赏这些想法和专长。

1 个答案:

答案 0 :(得分:6)

错误信息非常明确:

class FamilyLink(models.Model):
    from_legacy = models.ForeignKey(Legacy, related_name = 'familylink_from_legacy')
    to_legacy = models.ForeignKey(Legacy, related_name = 'familylink_to_legacy')

默认情况下,如果未设置related_name属性,则相关名称设置为familylink_set,并且由于来自同一关系的2个不同字段,会导致问题。

详细了解related_name attribute here