Od Subscription
je průchozí tabulka pro vztah m2m mezi Post
a Subscriber
, když objednáváte v poli Subscription
samotný model, všechny příspěvky se zobrazí jako jednotlivé řádky v sadě výsledků, a proto získáte s_count=1
protože každý příspěvek s konkrétním odběratelem je jedinečný.
Musíte anotovat Post
objekty s nejnovějším date_subscribed
všech subscribers
a poté objednejte v anotovaném poli:
posts = Post.objects.annotate(
s_count=Count('subscribers'),
s_date_max=Max('subscription__date_subscribed')
).order_by('-s_count', '-s_date_max')
AKTUALIZACE další otázky:
Pokud použijete count()
metoda vrátí počet Posts
. Můžete vidět, že se bude lišit od počtu, který získáte z len(queryset.values_list('s_count', 'subscription__date_subscribed'))
protože v tomto okamžiku byly jednotlivé hodnoty pro data načteny v sadě výsledků.