Sedan Subscription
är en genomgående tabell för m2m relation mellan Post
och Subscriber
, när du beställer på fältet Subscription
modell själv, alla inlägg visas som individuella rader i resultatuppsättningen och det är därför du får s_count=1
eftersom varje inlägg med en viss prenumerant är unikt.
Du måste kommentera Post
objekt med den senaste date_subscribed
av alla subscribers
och beställ sedan på kommenterat fält:
posts = Post.objects.annotate(
s_count=Count('subscribers'),
s_date_max=Max('subscription__date_subscribed')
).order_by('-s_count', '-s_date_max')
UPPDATERING för nästa fråga:
Om du använder count()
metod returnerar det antalet Posts
. Du kan se att det kommer att skilja sig från antalet du får från len(queryset.values_list('s_count', 'subscription__date_subscribed'))
eftersom de individuella värdena för datum vid denna tidpunkt har hämtats i resultatuppsättningen.