【发布时间】:2021-09-27 19:09:37
【问题描述】:
我正在根据两个不同的过滤器计算一些统计数据,但我不确定如何将这两个结果合并到一个 QuerySet 中。
我的代码如下所示:
qs1 = User.objects.filter(c1).annotate(count1=Count("id"))
qs2 = User.objects.filter(c2).annotate(count2=Count("id"))
我想创建第三个查询集qs3,它同时具有count1 和count2。基本上我想离开User.id,但我找不到直接的方法。
我也试过
count1 = Count('id', filter=c1)
count2 = Count('id', filter=c2)
qs3 = User.objects.annotate(count1=count1).annotate(count2=count2)
但它给了我不同的结果。
【问题讨论】:
-
从
qs1和qs2得到什么结果?每次计数不会只返回 0 或 1 吗? -
不,因为我的回答中的帖子解释了 django 中的
filter有点奇怪。如果您过滤相关元素,它会与这些表进行连接,这意味着用户的 id 将出现多次,每个相关记录一次。就我而言,这正是我想要的。
标签: django