Kể từ khi Subscription là một bảng thông qua cho mối quan hệ m2m giữa Post và Subscriber , khi bạn đặt hàng trên một trường Subscription mô hình chính nó, tất cả các bài đăng xuất hiện dưới dạng các hàng riêng lẻ trong tập kết quả và đó là lý do tại sao bạn nhận được s_count=1 bởi vì mỗi bài đăng với một người đăng ký cụ thể là duy nhất.
Bạn cần chú thích Post các đối tượng có date_subscribed mới nhất của tất cả subscribers và sau đó đặt hàng trên trường được chú thích:
posts = Post.objects.annotate(
s_count=Count('subscribers'),
s_date_max=Max('subscription__date_subscribed')
).order_by('-s_count', '-s_date_max')
CẬP NHẬT cho câu hỏi tiếp theo:
Nếu bạn sử dụng count() nó sẽ trả về số lượng Posts . Bạn có thể thấy rằng nó sẽ khác với số lượng bạn nhận được từ len(queryset.values_list('s_count', 'subscription__date_subscribed')) bởi vì tại thời điểm này, các giá trị riêng lẻ cho ngày đã được tìm nạp trong tập kết quả.