3

我有一个 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]

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

谁能帮我?

4

1 回答 1

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)

于 2010-10-11T16:52:29.627 回答