开发者

Can I do custom complicated group by in a Django QuerySet?

I need to do a sum of a certain column grouped by date and month. In SQL (postgres), it would look something like this:

select sum(amount) from some开发者_如何学Gowhere group by extract(year from date), extract(month from date)

Can this be expressed as a Django QuerySet? Seems to me like it can't, but I don't really want to resort to plain old SQL. Any other ideas are welcome.

Seems like it might be possible using queryset.query.group_by, but I haven't had any luck with that - a working example would be welcome.


You can use the extra method to add in the year and date values before doing the aggregation.

Somewhere.objects.extra(select={'year': 'EXTRACT(year FROM date)',
                                'month': 'EXTRACT(month FROM date)'}
                       ).values_list('year', 'month').annotate(Sum('amount'))


Take a look at Complex lookups with Q objects and Generating aggregates for each item in a QuerySet.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜