count() всегда делает запрос, причём только один. len() - не всегда делает запрос. Содержимое SQL запроса count можно увидеть только через connection:
from django.db import connection
print(connection.queries)
Если нужно узнать количество объектов в выборке
И итерироваться по ней - всегда используй len(), он работает следующим образом:
- Если выборка ещё не в кэше (SQL не запрашивался) - выполняет запрос
- Возвращает len() QuerySet'а
Если нужно только узнать количество - используй count()