Django - 将2个查询集外连接成1个不带原始sql的查询集

时间:2013-06-05 05:37:18

标签: django outer-join django-queryset

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

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

queryset1 = Model1.objects.all()

我有另一个查询集击中相同的表并进行一些聚合 -

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

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

那是否足够清楚?

1 个答案:

答案 0 :(得分:0)

我不知道我的头脑,但你可能会建立一个空模型,它是原始的代理并使用它。

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