我们如何通过 Django 1.5 ORM 实现以下目标:
SELECT TO_CHAR(date, 'IW/YYYY') week_year, COUNT(*) FROM entries GROUP BY week_year;
编辑:参见。 Follow up: Count of Group Elements With Joins in Django如果您需要加入。
最佳答案
我最近不得不做这样的事情。
您需要通过 Django 的 extra
添加 week_year
列,然后您可以在 values
方法中使用该列。
...这并不明显,但如果您随后使用annotate
,Django 将会对values
子句中提到的所有字段进行GROUP BY
(如此处文档中所述 https://docs.djangoproject.com/en/dev/topics/db/aggregation/#values )
所以你的代码应该是这样的:
Entry.objects.extra(select={'week_year': "TO_CHAR(date, 'IW/YYYY')"}).values('week_year').annotate(Count('id'))
关于Django:组元素计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24802065/