Django - 按年份汇总查询集

时间:2016-06-23 19:54:48

标签: python django orm

我的模特看起来像这样:

class TestData(models.Model):
    name = models.CharField(max_length=255)
    one_value = models.IntegerField()
    second_value = models.IntegerField()
    create_at = models.DateTimeField()

是否可以轻松生成一年中每周的总计值的查询集? Django 1.9,Python 3

2 个答案:

答案 0 :(得分:2)

from django.db.models import Func, F, Sum

class Week(Func):
    def as_mysql(self, compiler, connection):
        self.function = 'WEEK'
        return super().as_sql(compiler, connection)

data = (TestData.objects
        .filter(create_at__year=year)
        .annotate(week=Week('create_at', output_field=IntegerField()))
        .values('week')
        .annotate(Sum('one_value')))

Sum(F('one_value') + F('second_value')),取决于您想要获得的金额。

答案 1 :(得分:1)

这对我有用。接下来是Vladimir Danilov的解决方案。

{{1}}