seb*_*piq 5 python django django-orm
我想把这个查询从SQL转到Django:
"select date_format(date, '%Y-%m') as month, sum(quantity) as hours from hourentries group by date_format(date, '%Y-%m') order by date;"
Run Code Online (Sandbox Code Playgroud)
导致问题的部分是聚合时按月分组.我试过这个(看似合乎逻辑),但它不起作用:
HourEntries.objects.order_by("date").values("date__month").aggregate(Sum("quantity"))
Run Code Online (Sandbox Code Playgroud)
aggregate只能产生一个聚合值。
您可以通过以下查询获取当月的小时总数。
from datetime import datetime
this_month = datetime.now().month
HourEntries.objects.filter(date__month=this_month).aggregate(Sum("quantity"))
Run Code Online (Sandbox Code Playgroud)
因此,要获取 HourEntry 所有月份的聚合值,您可以循环数据库中所有月份的查询集。但最好使用原始sql。
HourEntries.objects.raw("select date_format(date, '%Y-%m') as month, sum(quantity) as hours from hourentries group by date_format(date, '%Y-%m') order by date;")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4753 次 |
| 最近记录: |