Ответ 1
Вы должны использовать aggregates.
from django.db.models import Count
User.objects.annotate(page_count=Count('page')).filter(page_count__gte=2).count()
У меня есть приложение, в котором пользователи создают страницы. Я хочу запустить простой запрос БД, который возвращает, сколько пользователей создали более 2 страниц.
Это, по сути, то, что я хочу сделать, но, конечно, это не правильный метод:
User.objects.select_related('page__gte=2').count()
Что мне не хватает?
Вы должны использовать aggregates.
from django.db.models import Count
User.objects.annotate(page_count=Count('page')).filter(page_count__gte=2).count()
В моем случае я не использовал последний .count()
, как другой ответ, и он также хорошо работает.
from django.db.models import Count
User.objects.annotate( our_param=Count("all_comments")).filter(our_param__gt=12)