django - 使用聚合将原始 SQL 查询集成到 Django ORM 中
问题描述
我正在尝试将此 RAW 查询集成到 django ORM 查询中,但我在应用原始查询和 orm 查询时遇到了问题
与 postgres 查询工具配合使用的原始查询:
"SELECT SUM(counter),type, manufacturer
FROM sells GROUP BY manufacturer, type"
现在我尝试将其集成到 django-orm 查询中,如下所示:
res_postgres = Sells.objects.all().values('manufacturer','type','counter').aggregate(cnter=Sum('counter'))
但我得到的只是一个柜台中心......
我需要的是看起来像这样的原始查询的结果
我还尝试过使用值和字段名称。像 Sells.objects.values('manufacturer'....).aggregate(cnter=Sum(counter)) 但是 django 正在构建一个集成了 GROUP BY id 的查询。这不是我需要的。我需要聚合整个数据而不是对象级别,同时保留其他字段的信息。
当我使用 Cars.objects.raw() 时,它会询问我主键,我也不需要。
这里有什么提示吗?Django ORM 有可能吗?
解决方案
使用annotate(...)
代替aggregate()
res_postgres = Sells.objects.values('manufacturer','type').annotate(cnter=Sum('counter'))
推荐阅读
- tensorflow - Tensorflow:LSTM模型中的形状错误预期形状=(无,无,90),发现形状=[90,1,78]
- javascript - 尝试加载 .obj 文件的 OBJLoader 404 错误
- scheme - 改写教堂数字功能
- python - 在空 X 服务器中运行 Tkinter
- javascript - 使用 CSS 将文本包裹在图像周围并使其表现得像背景图像
- sql - phpmyadmin如何连接SQL
- javascript - 有没有办法用nodemailer发送文件夹?
- html - 可滚动性弄乱了弹出菜单
- kotlin - org.ksoap2.transport.HttpResponseException 400 从 Kotlin 调用 .svc 时出现错误请求错误
- totp - win10如何给TOTP添加服务?