按天计算数据

时间:2013-10-02 11:30:25

标签: python sql django

我有这个查询集函数来计算字段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。

从查询集中获取数据后,我应该计算这些数据吗?

1 个答案:

答案 0 :(得分:1)

您应该尝试Count('created__day')。至少created__day应该在查询的过滤部分中起作用,因此直观地说,它也应该与Count一起使用。

修改

...不,它不起作用,但您可以在Count number of records by date in Django中找到解决方案。

所以基本上你必须使用.extra(...)结合一些(可能是非标准的)SQL函数来提取日期时间的一部分(例如MySQL DATE()),然后使用结果字段到Count