Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dziwne zachowanie Django manytomany zapytań

Od Subscription jest tabelą przelotową dla relacji m2m między Post i Subscriber , gdy zamawiasz na polu Subscription sam model, wszystkie posty pojawiają się jako pojedyncze wiersze w zestawie wyników i dlatego otrzymujesz s_count=1 ponieważ każdy post z konkretnym subskrybentem jest unikalny.

Musisz dodać adnotację do Post obiekty z najnowszą date_subscribed wszystkich subscribers a następnie zamów w polu z adnotacjami:

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

AKTUALIZACJA dla następnego pytania:

Jeśli używasz count() metoda zwróci liczbę Posts . Możesz zobaczyć, że będzie się różnić od liczby otrzymanej z len(queryset.values_list('s_count', 'subscription__date_subscribed')) ponieważ w tym momencie w zestawie wyników zostały pobrane indywidualne wartości dla dat.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmiana i zapisywanie danych użytkownika mysql w widoku Tabela wyświetlająca dane użytkownika

  2. Ceny zmiennoprzecinkowe czy dziesiętne?

  3. jaka jest różnica między UNIQUE INDEX a UNIQUE KEY?

  4. Połącz się z bazą danych MySql przez xamarin

  5. Unikalny identyfikator MySQL lub połączony identyfikator