我想要使用Django ORM的聚合结果。样本表结构是:
sample_table
| **id | user_id | viewed | likes | abc** |
| 1 | 123 | 1 | 1 | 0.1258965 |
| 2 | 222 | 0 | 1 | 0.0004585 |
| 3 | 123 | 0 | 0 | 0.0025802 |
| 4 | 123 | 1 | 1 | 0.2500245 |
我需要根据user_id
例如
[user_id, total viewd, total likes, total abc]
答案 0 :(得分:3)
由于您希望按用户分组值,因此您必须对User
模型和每行annotate
进行过滤以包含聚合。
假设sample_table
具有模型Sample
而外键为User
,则可以执行此操作:
from django.db.models import Sum
User.objects.annotate(total_viewed=Sum('sample__viewed'),
total_likes=Sum('sample__likes'),
total_abc=Sum('sample__abc'))
每个用户行还会包含字段total_viewed
,total_likes
和total_abc
。