【问题标题】:Django subquery using QuerySet使用 QuerySet 的 Django 子查询
【发布时间】:2011-04-15 17:23:00
【问题描述】:

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

例如:

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

【问题讨论】:

  • 你真正想在这里做什么?代码对我来说毫无意义。你真的想做query_set2.filter(something__x=y)吗?

标签: python database django orm


【解决方案1】:

我可以从两个方面理解你的问题。

  1. 您可以指定多个变量 在您的过滤器参数中,对于 示例:

    q = Something.objects.filter(x=y, w=z)
    
  2. 您想要在 SQL 中创建所谓的“连接”。这可以通过Django的聚合系统来完成,见官方Django Official Documentation。

【讨论】:

    【解决方案2】:

    简答:不。extra 方法不期望 querysets 被传入。

    如果您仔细考虑一下,这是有道理的。查询集是一种抽象,用于表示对数据库的提取操作的结果,extra 是将数据库中的自定义字段附加到查询集的便捷方式。除非您将 extra 的基本性质更改为“使用另一个查询集进行自定义过滤”,否则这是行不通的。

    【讨论】:

      猜你喜欢
      • 2018-10-28
      • 1970-01-01
      • 2020-08-14
      • 2021-08-28
      • 2017-11-30
      • 1970-01-01
      • 1970-01-01
      • 2019-08-05
      • 2012-10-31
      相关资源
      最近更新 更多