我有一個auth.User模型的QuerySet。Django ORM註解:最常見的用戶組查詢集
我想知道:哪些組包含大部分這些用戶。
例如:我有三組,這些用戶:
- G1:U1 U2 U3 U4
- G2:U1 U2
- G3:U1 U4 U5 U6
- G4:U5 U6 U7
用戶查詢集:U1 U3 U2
結果(計數這是在給定用戶的查詢集的成員):
- G1:計數3
- G2:計數2
- G3:計數1
- G4:計數0
如何我可以使用Django 1.8獲得模型組的帶註釋的QuerySet嗎?
使用案例
顯示有多少成員中的用戶名每個組有「×」。
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
沒有匹配的成員,但它應該是在註釋查詢集。
不錯,你的答案有效。結果SQL:'SELECT「auth_group」。「id」,「auth_group」。「name」,COUNT(CASE WHEN「auth_user_groups」。「user_id」IN(SELECT U0。「id」FROM「auth_user」U0 WHERE U0。「 username「:: text LIKE testfoobar%)THEN 1 ELSE NULL END)AS」user_cnt「FROM」auth_group「LEFT OUTER JOIN」auth_user_groups「ON(」auth_group「。」id「=」auth_user_groups「。」group_id「)GROUP BY」 auth_group」。「id」,「auth_group」。「name」ORDER BY「user_cnt」DESC' – guettli