ape*_*ari 4 python django aggregate django-queryset slice
Car.objects.all() # 5 cars in db, every car costs 1000 $
Car.objects.all().aggregate(Sum("price")) # result: 5000
# aggregate only on a subset
Car.objects.all()[3:].aggregate(Sum("price")) # result: 5000!, not 3000
# with filter()[3:] i got the same results!
Run Code Online (Sandbox Code Playgroud)
为什么?切片未在数据库中评估?
我怎样才能用聚合来实现这一点?
似乎不可能在切片上使用聚合,正如此公开票所建议的那样: https: //code.djangoproject.com/ticket/12886
一种解决方案是执行两个不同的查询。第一个用于检索汽车子集,第二个用于实际执行聚合:
qs = Car.objects.all()[:3]
sub_sum = Car.objects.filter(pk__in=qs).aggregate(Sum("price"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1024 次 |
| 最近记录: |