3

私は、ある家族と別の家族の関係を表すモデル クラスに取り組んでいます (家系図機能の一部)。

私のクラスは:

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

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

移行しようとすると、次のエラー メッセージが表示されます。

CommandError: 1 つ以上のモデルが検証されませんでした: archive.familylink: フィールド 'from_legacy' のアクセサーが関連フィールド 'Legacy.familylink_set' と衝突します。「from_legacy」の定義に related_name 引数を追加します。archive.familylink: フィールド 'to_legacy' のアクセサーが関連フィールド 'Legacy.familylink_set' と衝突します。「to_legacy」の定義に related_name 引数を追加します。

私の問題は、同じクラスに2つのforeignKeyがあり、両方が同じクラス(この場合は「レガシー」クラス)を指しているようです。これを解決/回避する方法を知っている人はいますか?

考えと専門知識に感謝します。

4

1 に答える 1

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属性が設定されていない場合、 relatedname が に設定されfamilylink_set、同じ関係からの 2 つの異なるフィールドが原因で問題が発生します。

属性について詳しくはこちらrelated_name

于 2013-10-29T17:53:15.540 に答える