我需要按日期和月份对某个列进行总和。在SQL(postgres)中,它看起来像这样:
select sum(amount) from somewhere group by extract(year from date), extract(month from date)
这可以表示为Django QuerySet
吗?对我来说似乎不能,但我真的不想诉诸普通的旧SQL。欢迎任何其他想法。
似乎有可能使用queryset.query.group_by
,但我没有任何运气 - 欢迎一个工作的例子。
答案 0 :(得分:9)
在进行聚合之前,您可以使用extra
方法添加年份和日期值。
Somewhere.objects.extra(select={'year': 'EXTRACT(year FROM date)',
'month': 'EXTRACT(month FROM date)'}
).values_list('year', 'month').annotate(Sum('amount'))
答案 1 :(得分:1)