【问题标题】:Django Monthly/quartarly grouping of DateField() dataDateField() 数据的 Django 每月/季度分组
【发布时间】:2010-10-11 14:42:14
【问题描述】:

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

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

谁能帮帮我?

【问题讨论】:

    标签: python django django-models datefield


    【解决方案1】:

    您可以使用模型的查询功能来做到这一点。 以下是每月查询的示例:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-26
      • 2020-11-16
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      相关资源
      最近更新 更多