複雑な関係を持つシステムに取り組んでおり、データをフィルタリングする効率的な方法を見つけようとしています。
次の関係があるとします。
model C- FK -> model B- FK ->model A
model C- FK -> model R- FK -> model T- FK ->model Z
それに関連付けられているすべての sをmodel Aどのように取得できますか?Z
1つのアプローチ(機能していると思いますが、あまり効率的ではありません)は次のとおりです。
class A(models.Model):
@property
def get_related_Zs(self):
Cs = models.C.objects.filter(B__A=self)
Zs = models.Z.objects.filter(R__T__Z__in=Cs).distinct()
return Zs
おそらくこれが最良のアプローチです(私はそうは思いません)。これを行うためのより効率的な方法についてのアイデアはありますか?