Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Django कई लोगों ने अजीब व्यवहार की क्वेरी की

चूंकि Subscription Post . के बीच m2m संबंध के लिए एक थ्रू टेबल है और Subscriber , जब आप Subscription . के क्षेत्र में ऑर्डर करते हैं मॉडल ही, सभी पोस्ट परिणाम सेट में अलग-अलग पंक्तियों के रूप में दिखाई देते हैं और इसलिए आपको s_count=1 मिलता है क्योंकि एक विशेष ग्राहक वाली प्रत्येक पोस्ट अद्वितीय होती है।

आपको Post पर एनोटेट करना होगा नवीनतम date_subscribed . के साथ ऑब्जेक्ट सभी subscribers . में से और फिर एनोटेट फ़ील्ड पर ऑर्डर करें:

posts = Post.objects.annotate(
            s_count=Count('subscribers'),
            s_date_max=Max('subscription__date_subscribed')
        ).order_by('-s_count', '-s_date_max')

अगले प्रश्न के लिए अद्यतन करें:

अगर आप count() का इस्तेमाल करते हैं विधि यह Post . की संख्या लौटाएगा . आप देख सकते हैं कि यह len(queryset.values_list('s_count', 'subscription__date_subscribed')) से आपको मिलने वाली गिनती से अलग होगा। क्योंकि इस समय परिणाम सेट में तिथियों के लिए अलग-अलग मान प्राप्त किए गए हैं।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. RPC के बिना GWT डेटाबेस-एक्सेस

  2. उपयोगकर्ता को लॉग इन रखने के लिए PHP कुकी - क्या यह पर्याप्त सुरक्षित है?

  3. मेरे `INSERT ... ON DUPLICATE KEY UPDATE` में 2 पंक्तियाँ क्यों प्रभावित हैं?

  4. MySQL में LOWER () फ़ंक्शन कैसे काम करता है

  5. MySQL चुनें कि JSON फ़ील्ड प्रॉपर्टी का मूल्य कहाँ है