【发布时间】:2015-04-29 18:57:29
【问题描述】:
这是我的 Django 模型:
class MyModel(models.Model):
a = IntegerField()
b = DateTimeField()
这是我在此模型上执行的查询集,用于查找 bs 的每个 a 值的计数、最小值、最大值和平均值:
>>> from django.db.models import Count, Max, Min, Avg
>>> MyModel.objects.extra(
... select={'avg': 'AVG(UNIX_TIMESTAMP(b))'}
... ).values('a').annotate(
... count=Count('b'),
... min=Min('b'),
... max=Max('b'),
... )
这是上面 QuerySet 的结果:
[
{'a': 1, 'count': 5, 'min': datetime.datetime(2015, 2, 26, 1, 8, 21, tzinfo=<UTC>), 'max': datetime.datetime(2015, 2, 26, 1, 8, 22, tzinfo=<UTC>)},
{'a': 2, 'count': 2, 'min': datetime.datetime(2015, 2, 26, 1, 8, 21, tzinfo=<UTC>), 'max': datetime.datetime(2015, 2, 26, 1, 8, 22, tzinfo=<UTC>)}
]
如您所见,QuerySet 的结果不包括我计算的平均字段。我怎样才能把它弄进去?我尝试了许多不同的排列。但是,如果我可以在其中获得avg 字段,那么它似乎会破坏a 的分组。
【问题讨论】:
标签: python django django-models django-queryset