我有这个查询集函数来计算字段created
,但我希望按天计算,而不是当前的计数,因为我想用这些数据制作图表。
queryset = Model.objects.filter(
user=user
).values("created").annotate(
Count("created")).order_by("created")
结果:
[{"created__count": 1, "created": "2013-10-01T09:05:50Z"}, {"created__count": 1, "created": "2013-10-01T09:05:53Z"}, {"created__count": 1, "created": "2013-10-01T09:05:56Z"}, {"created__count": 1, "created": "2013-10-01T09:26:37Z"}, {"created__count": 1, "created": "2013-10-01T09:26:41Z"}, {"created__count": 1, "created": "2013-10-01T09:27:10Z"}, {"created__count": 1, "created": "2013-10-01T09:27:15Z"}, {"created__count": 1, "created": "2013-10-01T10:12:40Z"}, {"created__count": 1, "created": "2013-10-01T10:12:46Z"}, {"created__count": 1, "created": "2013-10-01T10:12:53Z"}]
这有一些方法可以按日计算,如11/11:计数20,12 / 11:计数22。
从查询集中获取数据后,我应该计算这些数据吗?
答案 0 :(得分:1)
您应该尝试Count('created__day')
。至少created__day
应该在查询的过滤部分中起作用,因此直观地说,它也应该与Count
一起使用。
修改强>
...不,它不起作用,但您可以在Count number of records by date in Django中找到解决方案。
所以基本上你必须使用.extra(...)
结合一些(可能是非标准的)SQL函数来提取日期时间的一部分(例如MySQL DATE()
),然后使用结果字段到Count
。