Django解決model逆引用中のrelated_name問題


問題:
定義テーブルApple:

class Apple( models.Model):
  origin_level = models.ForeignKey(AppleLevel)
  new_level = models.ForeignKey(AppleLevel)
次のような問題があります。
monitor.apple:Access or for field‘origgin’level'classis with related field'Apple Level.apple_set.Adda related_name argment to the definition for‘origgin’level.
monitor.apple:Access or for field'new_level'classis with related field'Apple Level.apple_set.Adda related_name argment to the definition for'new_level.
理由:
一つのデータテーブルは同時に二回の外部キーでもう一つのテーブルを参照して、名前の問題があります。
解決策:
related_を使うname属性定義名称(related_)nameは、関連するオブジェクトの逆引用記述子である)。
具体的な修正コードは以下の通りです。

class Apple( models.Model):
  origin_level = models.ForeignKey(AppleLevel, related_name='orgin_level_appleset')
  new_level = models.ForeignKey(AppleLevel, related_name='new_level_appleset')
related_nameを使ったら、何の役に立つでしょうか?
用途は:
Apple Levelを通じて自身を引用するAppleオブジェクトを得ることができます。
例えば、
オリジンを通してlevelはApple Levelのidが12のAppleのすべてのオブジェクトを参照します。
Apple Level.object.get(id=12).origgin_levelappleest.object s.all()
new_を通じてlevelはApple Levelのidが12のAppleのすべてのオブジェクトを参照します。
Apple Level.object.get(id=12).new_levelappleest.object s.all()
以上のこのDjangoはmodelの逆引用の中のrelated_を解決します。nameの问题は小编がみんなに提供した内容を全部共有しました。参考にしていただければと思います。どうぞよろしくお愿いします。