Sejak Subscription
adalah tabel tembus untuk relasi m2m antara Post
dan Subscriber
, ketika Anda memesan di bidang Subscription
model itu sendiri, semua posting muncul sebagai baris individual di set hasil dan itulah mengapa Anda mendapatkan s_count=1
karena setiap postingan dengan pelanggan tertentu adalah unik.
Anda perlu membubuhi keterangan pada Post
objek dengan date_subscribed
terbaru dari semua subscribers
lalu pesan di kolom beranotasi:
posts = Post.objects.annotate(
s_count=Count('subscribers'),
s_date_max=Max('subscription__date_subscribed')
).order_by('-s_count', '-s_date_max')
PERBARUI untuk pertanyaan berikutnya:
Jika Anda menggunakan count()
metode itu akan mengembalikan jumlah Posts
. Anda dapat melihat bahwa itu akan berbeda dari jumlah yang Anda dapatkan dari len(queryset.values_list('s_count', 'subscription__date_subscribed'))
karena saat ini nilai individual untuk tanggal telah diambil di kumpulan hasil.