Complex django queryset annotation with multiple subqueries -


यहाँ कुछ एनोटेशन सूची है:

  count_set = {'num_followers': 'following_followinguser_leader' , 'Num_followings': 'के लिए निम्नलिखित_followinguser_follower',} कश्मीर के लिए count_set.iteritems () में: qs = qs.annotate (** {k: models.Count (v, distinct = true)}) वापसी qs  

मैं सभी फ़ील्ड को जोड़ने का समाधान देख रहा हूं जो कि num_followers और num_followings में कई अनूठे तत्व हो जाएगा ।

UPD: PostgreSQL तालिका स्कीमा के लिए, यह है कि तेजी से पर्याप्त होना चाहिए, सबसे अच्छा तरीका शुद्ध एसक्यूएल है, लेकिन डीजेango ORM के बारे में क्या?

निम्न

  तालिका "public.following_followinguser" कॉलम | | प्रकार | संशोधक ----------------- + -------------------------- + ---- -------------------------- आईडी | पूर्णांक | नल अनुयायी_आईडी | पूर्णांक | रिक्त नेता_आईडी | पूर्णांक | नल नहीं  

जहां अनुयायी और नेता आईडी कस्टम कोड के मॉडल से प्राप्त होते हैं AbstractUser से विरासत में मिला है। निम्न_फॉलिंगयुसर_लेडर ऊपर मॉडल के नेता फ़ील्ड के लिए संबंधित नाम है।

उदाहरण अनुयायियों को आईडी के साथ उपयोगकर्ता होने दें: 1, 2, 3 और उपयोगकर्ता 4 1, 2, 3, 5, 6. सभी की जरूरत है: 1, 2, 3, 5, 6. सभी की जरूरत है कि आईडी 1, 5, 6. के साथ उपयोगकर्ताओं के लिए अनुयायी। सभी की जरूरत है, यानी 5 की संख्या।

एसक्यूएल उत्पन्न संभवतया कड़ी मेहनत के रूप में हो सकता है क्योंकि आप इसे डीजेंगो ओआरएम के माध्यम से बना सकते हैं। आप हमेशा qs.query.sql_with_params () प्रिंट करके और जनरेटेड एसक्यूएल को देखकर मान्य कर सकते हैं। यदि आप की आवश्यकता है, तो आप गिनती में तेजी लाने के लिए स्तंभों में अनुक्रमित जोड़ सकते हैं (पोस्टग्रेस 9.2 +)।


Comments