Кто-нибудь знает, есть ли способ выбрать количество строк, соответствующих запросу в Django? У меня есть поиск, который я написал, который разбивает результаты на 40, но я также хотел бы показать общее количество результатов. Я мог бы что-то вроде len (Model.objects.filter(name__contains = search)), но похоже, что это было бы крайне неэффективно (поскольку я предполагаю, что будет генерировать "SELECT * FROM model", а затем все полученные объекты). Любые предложения?
Выберите COUNT с использованием модели Django?
Ответ 1
Есть два основных способа справиться с этим:
- Используйте метод Django count() QuerySet - просто добавьте count() в конец соответствующего QuerySet
- Создайте агрегирование над QuerySet. Агрегация - это когда вы "извлекаете значения, которые производятся путем суммирования или агрегации коллекции объектов". Ссылка: Документация агрегирования Django
Ссылки, приведенные выше, относятся к соответствующим разделам документации Django.
Ответ 2
Используйте count()
:
>>> Model.objects.count()
42
>>> Model.related_set.count()
102
>>> Model.related_set.filter(blah=42).count()
3