如何使用Django QuerySet选择多个?

时间:2010-10-01 17:05:25

标签: django django-queryset

假设我有两个模型,AB,其中A可以有多个B与之相关。给定A个对象的QuerySet,如何创建包含与所有这些B个对象相关的所有A个对象的QuerySet?

对于那些碰巧说LINQ的人,我想要这样的事情:

queryableOfA.SelectMany(a => a.Bs)

更好的是如何链接A - >的示例B - > C,即以下LINQ:

queryableOfA.SelectMany(a => a.Bs).SelectMany(b => b.Cs)

(通过C返回与所有A个对象相关的所有B个对象的“查询集”

1 个答案:

答案 0 :(得分:4)

对于A对象的查询集,您可以执行“in”启动查询:

B.objects.filter(a__in=MyQueryset) 

如果要查找通过B到A相关的所有C对象,则需要通过双下划线语法来跟踪关系。类似的东西:

C.objects.filter(b__a__in=MyAQueryset)