Od Subscription
jest tabelą przelotową dla relacji m2m między Post
i Subscriber
, gdy zamawiasz na polu Subscription
sam model, wszystkie posty pojawiają się jako pojedyncze wiersze w zestawie wyników i dlatego otrzymujesz s_count=1
ponieważ każdy post z konkretnym subskrybentem jest unikalny.
Musisz dodać adnotację do Post
obiekty z najnowszą date_subscribed
wszystkich subscribers
a następnie zamów w polu z adnotacjami:
posts = Post.objects.annotate(
s_count=Count('subscribers'),
s_date_max=Max('subscription__date_subscribed')
).order_by('-s_count', '-s_date_max')
AKTUALIZACJA dla następnego pytania:
Jeśli używasz count()
metoda zwróci liczbę Posts
. Możesz zobaczyć, że będzie się różnić od liczby otrzymanej z len(queryset.values_list('s_count', 'subscription__date_subscribed'))
ponieważ w tym momencie w zestawie wyników zostały pobrane indywidualne wartości dla dat.