Tôi có một QuerySet của mô hình auth.User.Chú thích ORM Django: Nhóm truy vấn người dùng phổ biến nhất
Tôi muốn biết: Nhóm nào là nhóm chứa nhiều người dùng nhất.
Ví dụ: Tôi có ba nhóm, với những người dùng:
- g1: u2 u1 u3 u4
- g2: u1 u2
- g3: u4 u1 U5 U6
- g4: U6 u5 U7
người dùng QuerySet: u1 u2 u3
quả (đếm các thành viên, đều trong cùng đưa người dùng QuerySet):
- g1: đếm 3
- g2: đếm 2
- g3: đếm 1
- g4: đếm 0
thế nào thế nào tôi có thể nhận được một QuerySet chú thích của mô hình Nhóm này với Django 1.8?
sử dụng Case
Hiện có bao nhiêu thành viên với "x" trong tên người dùng mỗi nhóm có.
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;
Cập nhật
Nhóm g4
không có thành viên phù hợp, nhưng nó phải ở trong QuerySet chú thích.
Rất hay, câu trả lời của bạn hoạt động. SQL kết quả: 'SELECT" auth_group "." Id "," auth_group "." Name ", COUNT (TRƯỜNG HỢP KHI" auth_user_groups "." User_id "IN (SELECT U0." Id "FROM" auth_user "U0 WHERE U0." tên người dùng ":: văn bản 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