python - 加入和分组 Django 查询集
问题描述
m1 = myModel.objects.filter(...)
m2 = myModel.objects.filter(...)
n1 = m1.values("date").annotate(car_crashes=Sum('car_crashes') * 1).values("date", "car_crashes")
n2 = m2.values("date").annotate(car_crashes=Sum('car_crashes') * 2).values("date", "car_crashes")
使用这段代码,我得到了 n1 和 n2 两个查询集:
<QuerySet [{'date': datetime.date(2008, 4, 1), 'car_crashes': Decimal(1.000)}, ... ]>
<QuerySet [{'date': datetime.date(2011, 4, 1), 'car_crashes': Decimal(2.000)}, ... ]>
请注意,它们的大小可能不同,并且某些日期可能在一个查询集中,但不在另一个查询集中。
如何在date
字段上对这两个查询集进行分组并求和car_crashes
?
我正在尝试这个:
(n1 | n2).annotate(car_crashes=Sum('car_crashes')).values("date", "car_crashes")
和这个
n1.union(n2).annotate(cc=Sum('car_crashes'))
但
无法计算总和('car_crashes'):'car_crashes' 是一个聚合
解决方案
使用union
运算符:
qs3 = m1.union(m2)
qs3.annotate(car_crashes=Sum('car_crashes')).values("date", "car_crashes")
我不知道为什么你不能像显示的那样使用 m1 和 m2 而不是 n1 和 n2。
工会参考。
推荐阅读
- postgresql - 如何使用 helm 和 kubernetes 从应用程序连接 postgresql?
- javascript - 将片段添加到语言服务器
- php - 如何在刷新时停止 phpmailer 多次重新发送?(并显示错误信息)
- html - 从具有相同属性的 css 转换中排除元素
- amazon-web-services - 如何通过 boto3 使用分配给 ec2 实例的 IAM 角色?
- javascript - Javascript(ES6 + Lodash)将源对象与另一个仅更新公共属性的对象深度合并
- r - 错误:“use_package”不是从“命名空间:devtools”导出的对象
- angular8 - 使用 angular 8 而不是 9 编译
- actionscript-3 - 如何将其加载到 AS3 中的 Main 类中?
- python-3.x - 使用 tkinter 定位 3 帧布局