Django:是否可以从多个嵌套级别检索一组相关对象?

时间:2013-10-07 14:16:52

标签: django django-models

说我有以下型号:

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具有的所有A?我试过了:

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

但它不起作用。这可能吗?如果是的话,我该如何实现呢?

2 个答案:

答案 0 :(得分:2)

你可以这样做:

cs = C.objects.filter(b__a__pk=[whatever])

答案 1 :(得分:1)

你可以这样做:

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

或者更合适的方式,通过像这样的C对象:

C.objects.filter(b__a__pk=[whatever])