Da Subscription
è una tabella passante per m2m relazione tra il Posts
e Subscriber
, quando ordini in un campo di Subscription
modello stesso, tutti i post vengono visualizzati come singole righe nel set di risultati ed è per questo che ottieni s_count=1
perché ogni post con un determinato iscritto è unico.
Devi annotare il Posts
oggetti con l'ultima date_subscribed
di tutti gli subscribers
e poi ordina sul campo annotato:
posts = Post.objects.annotate(
s_count=Count('subscribers'),
s_date_max=Max('subscription__date_subscribed')
).order_by('-s_count', '-s_date_max')
AGGIORNAMENTO per la prossima domanda:
Se usi count()
metodo restituirà il numero di Posts
. Puoi vedere che sarà diverso dal conteggio che ottieni da len(queryset.values_list('s_count', 'subscription__date_subscribed'))
perché in questo momento i singoli valori per le date sono stati recuperati nel set di risultati.