代码之家  ›  专栏  ›  技术社区  ›  0atman

Django Monthly/Quartarly Grouping of DateField()数据

  •  3
  • 0atman  · 技术社区  · 14 年前

    我有一个Django模型,其中包括 数据字段() 属性:

    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 回复  |  直到 14 年前
        1
  •  3
  •   OmerGertel    14 年前

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

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

    你想在哪里换车 strftime('%m',date) 具有 month(date) 或任何其他计算,取决于数据库日期时间功能。

    推荐文章