我可以在Django QuerySet中执行自定义复杂组吗?

时间:2011-01-18 09:46:50

标签: python django django-queryset

我需要按日期和月份对某个列进行总和。在SQL(postgres)中,它看起来像这样:

select sum(amount) from somewhere group by extract(year from date), extract(month from date)

这可以表示为Django QuerySet吗?对我来说似乎不能,但我真的不想诉诸普通的旧SQL。欢迎任何其他想法。

似乎有可能使用queryset.query.group_by,但我没有任何运气 - 欢迎一个工作的例子。

2 个答案:

答案 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)