1

次のモデルがあるとします。

class A(models.Model):
    pass

class B(models.Model):
    a = models.ForeignKey(A, related_name='bs')

B特定のが持つ のセットを取得する場合Aは、次のようにします。

a = A.objects.get(pk=[whatever])
a.bs.all()

ここで、次のモデルを追加すると:

class C(models.Model):
    b = models.ForeignKey(B, related_name='cs')

C特定の s が持つすべての s を取得するにはどうすればよいAですか? 私は試した:

a = A.objects.get(pk=[whatever])
a.bs.cs.all()

しかし、うまくいきません。これは可能ですか?もしそうなら、どうすればそれを達成できますか?

4

2 に答える 2

2

できるよ:

cs = C.objects.filter(b__a__pk=[whatever])
于 2013-10-07T14:20:35.637 に答える
1

次のように実行できます。

[b.cs.all() for b in A.objects.get(pk=[whatever]).bs.all()]

または、より適切な方法として、次のように C オブジェクトを使用します。

C.objects.filter(b__a__pk=[whatever])
于 2013-10-07T14:21:23.493 に答える