我如何在django中使用聚合

时间:2014-04-16 06:37:43

标签: python django django-queryset

我想要使用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]

1 个答案:

答案 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_viewedtotal_likestotal_abc