如何在Django中执行日期和时间的聚合?

时间:2018-04-04 09:32:08

标签: python django

我们说我有以下简单模型,用于演示目的:

Something.objects.all().values("manufacturer").annotate(frequency=Count(field))

如果我想得到每个制造商的总数,我可以做如下的事情:

values

我的目标是根据日期和时间做类似的事情。例如,每个月的总计数。

我首先想到的是,已经存在基于上述模型的数据是添加自定义属性,但您不能将其与save一起使用。

接下来,我想将必要的字段(日,月,年,...)添加到模型中,并添加自定义pandas.merge_asof方法来计算它们。

另一种方法是将查询集加载到pandas中并在那里进行计算。

有没有更合适的方法来做这样的事情?

1 个答案:

答案 0 :(得分:1)

您可以这样使用:

from django.db.models.functions import TruncMonth

Something.objects
      .annotate(month=TruncMonth('timestamp')) # Truncate to month to select
      .values('month') # Group By month
      .annotate(frequency=Count(field))  # Get count