Sinds Subscription is een doorgaande tabel voor m2m-relatie tussen de Post en Subscriber , wanneer u bestelt in een veld van Subscription model zelf, alle berichten verschijnen als individuele rijen in de resultatenset en daarom krijg je s_count=1 omdat elk bericht met een bepaalde abonnee uniek is.
U moet de Post . annoteren objecten met de laatste date_subscribed van alle subscribers en bestel dan in het geannoteerde veld:
posts = Post.objects.annotate(
s_count=Count('subscribers'),
s_date_max=Max('subscription__date_subscribed')
).order_by('-s_count', '-s_date_max')
UPDATE voor volgende vraag:
Als u count() . gebruikt methode retourneert het het aantal Posts . Je kunt zien dat het zal verschillen van de telling die je krijgt van len(queryset.values_list('s_count', 'subscription__date_subscribed')) omdat op dit moment de individuele waarden voor datums zijn opgehaald in de resultatenset.