【发布时间】:2018-06-26 08:20:37
【问题描述】:
我有一个名为 Log 的模型,它有一个日期时间字段 created_at。
我要做的是计算每个日期的Logs 的数量。
我尝试过这样做:
from django.db.models.functions import TruncDate
Log.objects.annotate(date=TruncDate('created_at')).values('date').annotate(c=Count('id'))
这给了我以下信息:
{'date': datetime.date(2018, 1, 17), 'count': 1}, {'date': datetime.date(2018, 1, 17), 'count': 1}, {'date': datetime.date(2018, 1, 17), 'count': 2}
也就是说,date 不是唯一的。
我想要的结果是这样的:
{'date': datetime.date(2018, 1, 17), 'count': 4}, {'date': datetime.date(2018, 1, 18), 'count': 2}
如何解决这个问题?
【问题讨论】:
-
@Rakesh 这是一个错误:
Cannot resolve keyword 'date' into field.,如果我将其更改为created_at,它什么也没有。 -
Log.objects.annotate(date=TruncDate('created_at')).values('date').distinct().annotate(c=Count('id')) ?
标签: python django postgresql django-queryset django-aggregation