为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

翻阅古今 2019-09-20 17:24:04
我有一个像这样的简单模型:class Order(models.Model):    created = model.DateTimeField(auto_now_add=True)    total = models.IntegerField() # monetary value我想逐个输出:一个月有多少销售额(COUNT)合并值(SUM)我不确定攻击它的最佳方法是什么。我已经看到了一些相当可怕的额外选择查询,但我简单的想法告诉我,我可能会更好的只是迭代数字,从任意的开始年/月开始计算直到我到达当前月份,抛弃简单查询过滤该月份。更多数据库工作 - 减少开发人员的压什么对你最有意义?有没有一种很好的方法可以撤回快速的数据表?或者我的脏方法可能是最好的主意?我正在使用Django 1.3。不确定他们最近是否添加了更好的方式GROUP_BY。
查看完整描述

3 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

另一种方法是使用ExtractMonth。由于只返回了一个日期时间年值,因此使用TruncMonth遇到了麻烦。例如,仅返回2009年的月份。ExtractMonth完美地解决了这个问题,可以像下面这样使用:


from django.db.models.functions import ExtractMonth

Sales.objects

    .annotate(month=ExtractMonth('timestamp')) 

    .values('month')                          

    .annotate(count=Count('id'))                  

    .values('month', 'count')  


查看完整回答
反对 回复 2019-09-20
  • 3 回答
  • 0 关注
  • 1985 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信