2010-09-22 63 views
3

是否有可能使用另一个QuerySet在QuerySet上执行子查询?使用QuerySet的Django子查询

例如:

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

你真的想在这里做什么?代码对我来说毫无意义。你真的想做'query_set2.filter(something__x = y)'吗? – 2010-09-22 13:02:42

回答

6

简短的回答:不可以。extra方法并不指望查询集在传递

如果你想想看一点,这是有道理的。查询集是用于表示数据库上的获取操作结果的抽象,并且是将数据库中的自定义字段附加到查询集的便捷方式。除非您将extra的基本性质更改为“使用另一个查询集进行自定义筛选”,否则这将不起作用。

+0

+1,一如既往,好的和教育的答案。 – 2010-09-23 10:19:37

2

我可以通过两种方式理解你的问题。

  1. 您可以在过滤器参数指定多个变量 ,为 例如:

    q = Something.objects.filter(x=y, w=z) 
    
  2. 你想使所谓SQL中的“连接”。这可以通过Django的聚合系统完成,请参阅官方Django Official Documentation