Desde Subscription
es una tabla directa para la relación m2m entre el Post
y Subscriber
, cuando realiza un pedido en un campo de Subscription
modelo en sí, todas las publicaciones aparecen como filas individuales en el conjunto de resultados y es por eso que obtienes s_count=1
porque cada publicación con un suscriptor en particular es única.
Debe anotar la Post
objetos con el último date_subscribed
de todos los subscribers
y luego ordenar en el campo anotado:
posts = Post.objects.annotate(
s_count=Count('subscribers'),
s_date_max=Max('subscription__date_subscribed')
).order_by('-s_count', '-s_date_max')
ACTUALIZAR para la siguiente pregunta:
Si usa count()
método devolverá el número de Posts
. Puede ver que diferirá del recuento que obtiene de len(queryset.values_list('s_count', 'subscription__date_subscribed'))
porque en este momento los valores individuales para las fechas se han obtenido en el conjunto de resultados.