只是想知道是否有可能获得仅使用 Django ORM 的 SQL 查询可以获得的结果:
SELECT * FROM (SELECT DATE_FORMAT(created, "%Y") as dte, sum(1) FROM some_table GROUP BY dte) as analytics;
结果是:
+------+--------+
| dte | sum(1) |
+------+--------+
| 2006 | 20 |
| 2007 | 2230 |
| 2008 | 4929 |
| 2009 | 1177 |
+------+--------+
简化模型如下所示:
# some/models.py
class Table(models.Model):
created = models.DateTimeField(default=datetime.datetime.now)
我已经尝试了各种混合使用 .extra(select={}) 和 .values() 的方法,还使用了此处描述的 .query.group_by 技巧,但希望能以全新的眼光看待这个问题。