web-dev-qa-db-fra.com

Django Nombre de champs liés aux requêtes

J'ai une application où les utilisateurs créent des pages. Je souhaite exécuter une requête DB simple qui renvoie le nombre d'utilisateurs ayant créé plus de 2 pages.

C'est essentiellement ce que je veux faire, mais bien sûr ce n'est pas la bonne méthode:

User.objects.select_related('page__gte=2').count()

Qu'est-ce que je rate?

56
Brenden

Vous devez utiliser agrégats .

from Django.db.models import Count
User.objects.annotate(page_count=Count('page')).filter(page_count__gte=2).count()
100
Ismail Badawi

Dans mon cas, je n'ai pas utilisé la dernière .count() comme la autre réponse et cela fonctionne aussi bien.

from Django.db.models import Count

User.objects.annotate( our_param=Count("all_comments")).filter(our_param__gt=12)
1
Yarik