1

Django モデルの長いチェーンがあり、それぞれがForeignKeyフィールドを介して上記のモデルを参照しているとします。

class One(models.Model):
    # fields

class Two(models.Model):
    one = models.ForeignKey(One)

...

class Ten(models.Model):
    nine = models.ForeignKey(Nine)

良い!Tenモデルのインスタンスがあり、関連するインスタンスを取得したい場合をイメージしてくださいOne。これにより、次のような属性チェーンの長い行が発生する可能性があります。

ten_instance.nine.eight.seven.six.five.four.three.two.one

この厄介な問題に対する標準的なアプローチはどうなるのだろうと思っています。本質的に説明的で読みやすいので、そのままにしておきますか。それとも、物事をよりシンプルにするために、そのような行を短くすることを目指していますか?

ten_instance.one

 しかし、ここでのベストプラクティスは何ですか? それとももっと簡単な解決策がありますか?

4

2 に答える 2

2

プロパティを使用

私の現在のアプローチはpropertyTenモデルに を追加し、その属性チェーンを抽象化することです。

class Ten(models.Model):
    nine = models.ForeignKey(Nine)

    @property
    def one(self):
        return self.nine.eight.seven.six.five.four.three.two.one

ただし、この戦術にはマイナス面があり、それは追加の神秘主義です. Tenインスタンスは実際にOneモデルと関係がありますか? モデルを自分で調べないとわかりません。

于 2012-11-23T15:29:33.220 に答える