Django:按日期分组(日,月,年)

我有一个像这样的简单模型:


class Order(models.Model):

    created = model.DateTimeField(auto_now_add=True)

    total = models.IntegerField() # monetary value

我想逐个输出:


一个月有多少销售额(COUNT)

合并值(SUM)

我不确定攻击它的最佳方法是什么。我已经看到了一些相当可怕的额外选择查询,但我简单的想法告诉我,我可能会更好的只是迭代数字,从任意的开始年/月开始计算直到我到达当前月份,抛弃简单查询过滤该月份。更多数据库工作 - 减少开发人员的压


什么对你最有意义?有没有一种很好的方法可以撤回快速的数据表?或者我的脏方法可能是最好的主意?


我正在使用Django 1.3。不确定他们最近是否添加了更好的方式GROUP_BY。


翻阅古今
浏览 1975回答 3
3回答

UYOU

另一种方法是使用ExtractMonth。由于只返回了一个日期时间年值,因此使用TruncMonth遇到了麻烦。例如,仅返回2009年的月份。ExtractMonth完美地解决了这个问题,可以像下面这样使用:from django.db.models.functions import ExtractMonthSales.objects    .annotate(month=ExtractMonth('timestamp'))     .values('month')                              .annotate(count=Count('id'))                      .values('month', 'count')  
打开App,查看更多内容
随时随地看视频慕课网APP