我的模特看起来像这样:
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
答案 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}}