sza*_*man 0 sqlite django django-models
我有以下型号:
class Model(...):
date = DateField()
user = ForeignKey()
data = ForeignKey()
time = IntegerField()
Run Code Online (Sandbox Code Playgroud)
我想为每个用户提供单个数据的时间总和字段,所以我这样做:
Model.objects.filter(date=..., data=...).values('user_id').annotate(time=Sum('time'))
Run Code Online (Sandbox Code Playgroud)
但我收到的结果如下:
[{'user_id':1,'时间':20},{'user_id':1,'时间':10},{'user_id':2,'时间':20}]
所以分组不起作用.我检查了django生成的查询,我不知道为什么django也使用日期和数据进行分组,而不仅仅是用户.我做错了什么或者这只是SQLite问题?
您应该附加.order_by()到查询集以清除默认模型排序.
对于你的代码:
(Model.objects.filter(date=…, data=…)
.values('user_id')
.annotate(time=Sum('time'))
.order_by()) # <---- Here
Run Code Online (Sandbox Code Playgroud)
这在默认订购文档警告中已完整解释:
"除了它不会很有效.按名称的默认排序也将在分组中起作用......你应该...清除查询中的任何排序."
| 归档时间: |
|
| 查看次数: |
329 次 |
| 最近记录: |