Выберите COUNT, используя модель Django? - PullRequest
24 голосов
/ 30 июля 2010

Кто-нибудь знает, есть ли способ просто выбрать количество строк, соответствующих запросу в Django?У меня есть поисковый запрос, который разбивает результаты на 40 наборов, но я также хотел бы отобразить общее количество результатов.Я мог бы что-то вроде len (Model.objects.filter (name__icontains = search)), но кажется, что это было бы крайне неэффективно (так как я предполагаю, что это сгенерирует «SELECT * FROM model», а затем все получающиеся результатыобъекты).Есть предложения?

Ответы [ 2 ]

43 голосов
/ 30 июля 2010

Для этого есть два основных способа:

  1. Использовать Метод QuerySet в Django count () - просто добавить count () в конец соответствующего QuerySet
  2. Создает агрегат по QuerySet - Агрегация - это когда вы "извлекаете значения, полученные путем суммирования или агрегирования коллекции объектов". Ссылка: документация агрегации Django

Приведенные выше ссылки относятся к соответствующим разделам документации Django.

40 голосов
/ 30 июля 2010

Использование count():

>>> Model.objects.count()
42
>>> Model.related_set.count()
102
>>> Model.related_set.filter(blah=42).count()
3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...