sql >> Database >  >> RDS >> Mysql

Django Manytomany vraagt ​​raar gedrag

Sinds Subscription is een doorgaande tabel voor m2m-relatie tussen de Post en Subscriber , wanneer u bestelt in een veld van Subscription model zelf, alle berichten verschijnen als individuele rijen in de resultatenset en daarom krijg je s_count=1 omdat elk bericht met een bepaalde abonnee uniek is.

U moet de Post . annoteren objecten met de laatste date_subscribed van alle subscribers en bestel dan in het geannoteerde veld:

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

UPDATE voor volgende vraag:

Als u count() . gebruikt methode retourneert het het aantal Posts . Je kunt zien dat het zal verschillen van de telling die je krijgt van len(queryset.values_list('s_count', 'subscription__date_subscribed')) omdat op dit moment de individuele waarden voor datums zijn opgehaald in de resultatenset.




  1. devnagri (hindi) lettertype wordt niet opgeslagen in mysql

  2. Hoe gebruik je meerdere databases met php?

  3. Algemene fout:1366 Onjuiste integerwaarde met Doctrine 2.1 en Zend Form-update

  4. ODBC gebruiken met Salesforce en Azure Active Directory (AD) Single Sign On (SSO)