python - Django 每月/每季度对 DateField() 数据进行分组

标签 python django django-models datefield

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

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

我正在编写一个 View ,按周、月、季度和年对这些数据进行分组。 我已经硬编码了一个计算方法,该计算方法足够简单地获得我的每月值(value) - 通过将那个月的所有值相加并除以有多少条目 - 但我觉得必须有一种更优雅的方法来做到这一点。

我的目标是这样的:

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]

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

谁能帮帮我?

最佳答案

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

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

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

关于python - Django 每月/每季度对 DateField() 数据进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3907240/

相关文章:

django - 无法将嵌套应用程序中的自定义 Django 模型指定为 AUTH_USER_MODEL

django - Django 能否自动创建相关的一对一模型?

django - 我使用什么模型对象类型来存储 Django Admin 中的时间值?

python - 访问 numpy 数组中元素的属性

python - 为什么 Eclipse 中的 Pydev 声称工作程序出现错误?

python - 属性错误 : 'list' object has no attribute 'sort_values'

Django UNIQUE 约束失败 : core_organization. 名称

python - 如何将多线程添加到连续的 Python 函数中?

python - python-memcached 是否支持一致的哈希和二进制协议(protocol)?

python - 关注者-关注表是多对多关系吗?