Skip to main content
 首页 » 编程设计

python之我如何在 Django 中使用聚合

2024年08月27日28zdz8207

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

请您参考如下方法:

由于您希望对每个用户的值进行分组,因此您必须在 User 模型上进行过滤并注释每一行以包含聚合。

假设 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。