Django使用QuerySet的子查询
可以在一个查询集中使用另一个查询集来进行子查询吗?
举个例子:
q = Something.objects.filter(x=y).extra(where=query_set2)
2 个回答
2
我可以从两个方面理解你的问题。
你可以在过滤参数中指定多个变量,比如:
q = Something.objects.filter(x=y, w=z)
你想在SQL中做一个叫“连接”的操作。这可以通过Django的聚合系统来实现,具体可以参考官方的Django官方文档。
6
简单来说:不可以。extra
方法并不支持传入 querysets。
想一想,这其实是有道理的。Querysets 是一种抽象概念,用来表示从数据库获取的结果,而 extra
是一种方便的方法,可以把数据库中的自定义字段添加到 queryset 中。除非你改变 extra
的基本定义,让它表示“用另一个 queryset 进行自定义过滤”,否则这样做是行不通的。