python - 我如何在 django 中使用聚合

标签 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]

最佳答案

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

假设 sample_table 具有模型 SampleUser 的外键,您可以执行以下操作:

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

关于python - 我如何在 django 中使用聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23101836/

相关文章:

python - pip 找不到tensorflow-gpu 2.0-alpha

python - 如何在不对数据库进行下一次查询的情况下对 django 查询集进行操作

django - 如何将复杂的 Django 查询构建为字符串

sql - 在 Django 中,检查空查询集的最有效方法是什么?

python - 比较一行中的值并将结果写入新列

c++ - Boost-python 如何将 C++ 类实例传递给 Python 类

python - 将循环层附加到具有不同隐藏大小的 PyTorch LSTM 模型

python - 在 Django urlpatterns 中省略 'url(' 有什么意义

django - 按显示名称而不是实际值排序

python - 在 django bulk_create 中获取 IntegrityError 的 key