【发布时间】:2016-06-22 04:26:34
【问题描述】:
我有一个 auth.User 模型的 QuerySet。
我想知道:哪些组包含这些用户最多。
示例:我有三个组,有这些用户:
- g1: u1 u2 u3 u4
- g2: u1 u2
- g3: u1 u4 u5 u6
- g4: u5 u6 u7
用户查询集:u1 u2 u3
结果(计算给定 User-Queryset 中的成员):
- g1:计数 3
- g2:计数 2
- g3:计数 1
- g4:计数 0
如何使用 Django 1.8 获得模型组的带注释的 QuerySet?
用例
显示每个组有多少用户名中带有“x”的成员。
SQL
SELECT auth_group.id, auth_group.name,
(SELECT COUNT(auth_user_groups.id) FROM auth_user_groups WHERE
auth_user_groups.group_id = auth_group.id AND
auth_user_groups.user_id IN (SELECT auth_user.id FROM auth_user WHERE username LIKE '%x%')) AS user_cnt
FROM auth_group ORDER BY user_cnt DESC;
更新
组 g4 没有匹配的成员,但它应该在带注释的 QuerySet 中。
【问题讨论】:
标签: django django-models orm