🐍 Совет для Django-разработчиков: избегайте бесполезного использования .all()



Когда вы пишете запрос в Django ORM, важно понимать, как работают QuerySet. Например, если у вас есть такой код:



Digger.objects.all().filter(height_cm__gt=200)




Использование .all() здесь лишнее. Эквивалентный код без него будет выглядеть так:



Digger.objects.filter(height_cm__gt=200)




Почему? Дело в том, что менеджер Digger.objects уже ссылается на все объекты модели Digger. Вызов .filter() создаёт QuerySet с применённым фильтром. Добавление .all() лишь создает лишнюю копию QuerySet между этими шагами.



О том, когда применять .all() всё-таки нужно, читайте в статье 👈