sql >> Databasteknik >  >> RDS >> Mysql

Django många frågar konstigt beteende

Sedan Subscription är en genomgående tabell för m2m relation mellan Post och Subscriber , när du beställer på fältet Subscription modell själv, alla inlägg visas som individuella rader i resultatuppsättningen och det är därför du får s_count=1 eftersom varje inlägg med en viss prenumerant är unikt.

Du måste kommentera Post objekt med den senaste date_subscribed av alla subscribers och beställ sedan på kommenterat fält:

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

UPPDATERING för nästa fråga:

Om du använder count() metod returnerar det antalet Posts . Du kan se att det kommer att skilja sig från antalet du får från len(queryset.values_list('s_count', 'subscription__date_subscribed')) eftersom de individuella värdena för datum vid denna tidpunkt har hämtats i resultatuppsättningen.




  1. MySQL och GROUP_CONCAT() maxlängd

  2. Få den första måndagen i en månad i SQLite

  3. Hur man skapar en pivotfråga i sql-server utan aggregatfunktion

  4. Event Scheduler bör köras varje månad