चूंकि 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'))
से आपको मिलने वाली गिनती से अलग होगा। क्योंकि इस समय परिणाम सेट में तिथियों के लिए अलग-अलग मान प्राप्त किए गए हैं।