【问题标题】:Foreign Keys clash with related field in Django Model外键与 Django 模型中的相关字段冲突
【发布时间】:2013-11-09 00:47:04
【问题描述】:

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

我的班级是:

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”的访问器与相关字段冲突 '旧版.familylink_set'。将related_name 参数添加到定义中 对于'from_legacy'。 archive.familylink:字段“to_legacy”的访问器 与相关字段“Legacy.familylink_set”发生冲突。添加一个related_name 'to_legacy' 定义的参数。

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

我很欣赏这些想法和专业知识。

【问题讨论】:

  • 您是否尝试过按照要求添加相关名称参数?

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


【解决方案1】:

错误信息非常解释:

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 属性,则relatedname 设置为familylink_set,并且由于来自同一关系的2 个不同字段,因此会导致问题。

阅读更多related_name attribute here

【讨论】:

  • 效果很好!感谢您的反馈。下次阅读/处理错误消息时,我会做得更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-24
  • 1970-01-01
  • 1970-01-01
  • 2016-03-09
  • 1970-01-01
  • 2020-08-01
  • 2017-10-02
相关资源
最近更新 更多