【问题标题】:Django - outer join 2 querysets into 1 queryset without raw sqlDjango - 将 2 个查询集外连接到 1 个没有原始 sql 的查询集
【发布时间】:2013-05-31 16:51:17
【问题描述】:

是否有一个选项可以创建一个外部连接 2 个没有原始 sql 的查询集的查询集?

我有一个查询集命中 1 个表 -

queryset1 = Model1.objects.all()

我有另一个查询集命中 same 表并进行一些聚合 -

queryset2 = Model1.objects.filter(relatedField__days__range=(2013-05-11, 2013-05-13)).annotate(s1=Sum(relatedField__field1), s2=Sum(relatedField__field2))

我想在没有原始 sql 的情况下将第一个查询集与第二个查询集左外连接。 如您所见,第二个查询集是第一个查询集的子集。 问题是,我想返回表中的所有对象。 如果一个对象没有通过过滤器,我想在总和字段中显示 0。 这就是我想要外部连接的原因。

够清楚了吗?

【问题讨论】:

  • 给出一个实际用例。您给出的示例可能会以多种方式得到回应。尽可能具体,以获得快速准确的答案。
  • 这似乎是多余的?在不了解更多信息的情况下,我会说您可以跳过一起执行第一个查询集。

标签: django outer-join django-queryset


【解决方案1】:

我不知道,但您可能会构建一个空模型来代替原始模型并使用它。

https://docs.djangoproject.com/en/dev/topics/db/models/#proxy-models

【讨论】:

    猜你喜欢
    • 2014-07-01
    • 2015-01-27
    • 2020-12-24
    • 2016-08-31
    • 2016-08-20
    • 2023-03-12
    • 2018-06-26
    • 1970-01-01
    • 2013-03-04
    相关资源
    最近更新 更多