我想把这个查询从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;"
导致问题的部分是聚合时按月分组。我试过这个(这似乎合乎逻辑),但它不起作用:
HourEntries.objects.order_by("date").values("date__month").aggregate(Sum("quantity"))
答案 0 :(得分:2)
aggregate
只能生成一个汇总值。
您可以通过以下查询获得当月的总小时数。
from datetime import datetime
this_month = datetime.now().month
HourEntries.objects.filter(date__month=this_month).aggregate(Sum("quantity"))
因此,要获取HourEntry所有月份的聚合值,您可以遍历db中所有月份的查询集。但最好使用原始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;")
答案 1 :(得分:0)
我猜你在使用values("date__month")
后无法汇总“数量”,因为这只会在QuerySet中留下“date”和“month”。