Django使用QuerySet进行子查询

3

是否可以在一个QuerySet中使用另一个QuerySet执行子查询?

例如:

q = Something.objects.filter(x=y).extra(where=query_set2)

1
你真正想在这里做什么?对我来说,这段代码毫无意义。你是否真的想执行query_set2.filter(something__x=y) - Deniz Dogan
2个回答

6
简短回答:不行。extra方法不需要传递查询集
如果你仔细思考一下,这是有道理的。查询集是用于表示从数据库获取操作结果的抽象,而extra是一种方便的方式,将自定义字段从数据库附加到查询集上。除非你改变extra的基本特性,使其意味着“使用另一个查询集进行自定义过滤”,否则这种方法不起作用。

2
我可以理解你的问题有两种方式。
  1. You can specify multiple variables in your filter parameters, for example :

    q = Something.objects.filter(x=y, w=z)
    
  2. You want to make what is called a "join" in SQL. This can be done via the aggregation system of Django, see the official Django Official Documentation.


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接