Mysql
 sql >> база данни >  >> RDS >> Mysql

Странно поведение на многото много заявки на Django

От Subscription е проходна таблица за m2m връзка между Post и Subscriber , когато поръчвате в поле на Subscription самия модел, всички публикации се показват като отделни редове в набора от резултати и затова получавате s_count=1 защото всяка публикация с конкретен абонат е уникална.

Трябва да анотирате Post обекти с най-новата date_subscribed от всички subscribers и след това поръчайте в анотирано поле:

posts = Post.objects.annotate(
            s_count=Count('subscribers'),
            s_date_max=Max('subscription__date_subscribed')
        ).order_by('-s_count', '-s_date_max')

АКТУАЛИЗИРАНЕ за следващия въпрос:

Ако използвате count() метод, той ще върне броя на Posts . Можете да видите, че ще се различава от броя, който получавате от len(queryset.values_list('s_count', 'subscription__date_subscribed')) тъй като в този момент отделните стойности за дати са извлечени в набора от резултати.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да проверите размера на базата данни MySQL в Linux

  2. MYSQL избира брой по стойност

  3. MySQL UPDATE и SELECT с един проход

  4. Codeigniter Select_Sum връща масив, а не числова стойност?

  5. Как да изтриете всички таблици в базата данни, без да изтриете самата база данни?