1

假设我有以下型号:

class A(models.Model):
    pass

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

如果我想检索B特定的 's集A,我会执行以下操作:

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

现在,如果我添加以下模型:

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

我怎样才能得到C一个特定的所有 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 回答