Django Date Field()数据的每月/每季度分组

时间:2010-10-11 14:42:15

标签: python django django-models datefield

我有一个django模型,其中包含 DateField()属性:

class Table():
    date = models.DateField()
    value = models.FloatField()

我正在编写一个视图,按周,月季度和年份对这些数据进行分组。 我已经硬编码了一个计算,它可以让我的每月价值足够 - 通过将当月的所有值加起来并根据有多少条目来计算 - 但我觉得必须有一种更优雅的方式来做到这一点。

我的目标是:

get_monthly(Table.objects.all())
>>> [123, 412, 123, 534, 234, 423, 312, 412, 123, 534, 234, 423]
get_quarterly(Table.objects.all())
>>> [123, 412, 123, 534]

列表中的值是每月的平均值。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:3)

您可以使用模型的查询功能执行此操作。 以下是每月查询的示例:

from django.db.models import Avg
Table.objects.extra(select={'month':"strftime('%m',date)"}).values('month').annotate(Avg('value'))

您可能希望使用strftime('%m',date)或任何其他计算更改month(date),具体取决于您的数据库日期时间功能。