在Django中,如何使用MySQL从DateTime字段注解(GROUP BY)日期

k10s72fa  于 2022-12-10  发布在  Mysql
关注(0)|答案(1)|浏览(156)

定义为

class Data(models.Model):
    created_at = models.DateTimeField(default=timezone.now)
    number = models.IntegerField(default=1)

要求是从created_at获得sum分组,我正在使用。

qs = Data.objects.values('created_at__date').annotate(sum=Sum('number'))

上面的查询在sqlite3上运行得很好,但在MySQL上失败了。在MySQL中,它返回单个结果<QuerySet [{'created_at__date': None, 'sum': 100}]>
例外情况:

<QuerySet [
  {'created_at__date': datetime.date(2021, 7, 12), 'sum': 50}, 
  {'created_at__date': datetime.date(2021, 7, 13), 'sum': 50}
]>
x3naxklr

x3naxklr1#

找到了解决方案,请尝试这样做:

qs = Data.objects.annotate(sum=Sum('number')).annotate(created_at__date=TruncDate('created_at')).values("created_at__date","sum")

相关问题