Задать вопрос
@FreeDobby
Свободный Добби

Count of filter?

При выполнении запроса Model.objects.filter(...).count() сколько будет сделано запросов? Будет ли это SELECT COUNT FROM WHERE или же он сначала вернет все объекты массивом и посчитает их средствами питона? И еще чисто для проверки как вывести содержимое этого запроса в sql виде? Как обычно query не выходит, count же int возвращает.
  • Вопрос задан
  • 245 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Компьютерная академия «TOP»
    Разработка на Python
    1 год
    Далее
Решения вопроса 1
@deliro
count() всегда делает запрос, причём только один. len() - не всегда делает запрос. Содержимое SQL запроса count можно увидеть только через connection:
from django.db import connection
print(connection.queries)

Если нужно узнать количество объектов в выборке И итерироваться по ней - всегда используй len(), он работает следующим образом:
  1. Если выборка ещё не в кэше (SQL не запрашивался) - выполняет запрос
  2. Возвращает len() QuerySet'а


Если нужно только узнать количество - используй count()
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
sim3x
@sim3x
Апп для дебага
django-debug-toolbar.readthedocs.io/en/stable/pane...

Когда нужно в одном месте посмотреть - иногда примеры идут на питон2
stackoverflow.com/questions/971667/django-orm-how-...

Суть вопроса
https://docs.djangoproject.com/en/1.10/ref/models/...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы