मेरे पास auth.User मॉडल का QuerySet है।डीजेगो ओआरएम एनोटेशन: उपयोगकर्ता क्वेरीसेट का सबसे आम समूह
मैं जानना चाहता हूं: कौन से समूह इन उपयोगकर्ताओं में से अधिकतर हैं।
उदाहरण:
- G1: u1 u2 U3 U4
- G2: u1 u2
- G3: u1 U4 यू 5 U6
- g4: यू 5 U6 मैं तीन समूहों, इन उपयोगकर्ताओं के साथ है यू 7
उपयोगकर्ता-क्वेरीसमूह: u1 u2 U3
परिणाम (गिनती सदस्य हैं जिसमें दिए गए उपयोगकर्ता के क्वेरीसमूह में हैं):
- G1: गिनती 3
- G2: गिनती 2
- G3: गिनती 1
- g4: गिनती 0
कैसे क्या मैं Django 1.8 के साथ मॉडल समूह के एनोटेटेड क्वेरीरीसेट प्राप्त कर सकता हूं?
प्रयोग करें प्रकरण
दिखाएँ कैसे साथ "x" उपयोगकर्ता नाम प्रत्येक समूह है में कई सदस्यों को।
एसक्यूएल
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
कोई मिलता-जुलता सदस्य हैं, लेकिन यह एनोटेट क्वेरीसमूह में होना चाहिए।
अच्छा, आपका उत्तर काम करता है। परिणामी एसक्यूएल: 'SELECT "auth_group"। "Id", "auth_group"। "Name", COUNT (केस जब "auth_user_groups"। "User_id" IN (चुनें U0। "Id" से "auth_user" U0 कहां U0। " उपयोगकर्ता नाम ":: टेक्स्ट LIKE testfoobar%) फिर 1 ELSE नल अंत)" auth_group "से" user_cnt "के रूप में बाएं बाहरी जॉइन" auth_user_groups "चालू (" auth_group "।" id "=" auth_user_groups "।" group_id ") ग्रुप बाय" auth_group "।"id", "auth_group"। "name" ऑर्डर द्वारा "user_cnt" DESC' – guettli