Python Web & Scripts — Django, FastAPI, скрипты
7 мест в Django-проекте, где тихо рождаются баги и лишние запросы
Если проект на Django уже живёт, проблемы обычно прячутся не в «бизнес-логике», а в связке моделей, шаблонов и админки. За неделю в репах чаще всего всплывают одни и те же вещи: лишние обращения к БД, тяжёлые queryset’ы и скрытая работа в свойствах моделей.
— В шаблоне вызывают методы или свойства, которые лезут в БД. Один цикл превращается в пачку запросов.
— В __str__ и admin list_display кладут расчёты или обращение к связям. Потом тормозит даже список объектов.
— Вьюха тянет всё подряд вместо точечного only(), select_related() и prefetch_related(). На маленьких данных это не видно, на реальных — уже да.
Есть наблюдение которое стоит проверить: если код «красивый», но неочевидно где происходит запрос, значит он опасен. В Django лучше явно держать границу: логика в сервисе или менеджере, представление — только собирает данные, шаблон — только показывает.
— Перед релизом прогоняйте экран с логированием SQL.
— Отдельно смотрите admin, потому что там часто сидят самые дорогие поля.
— Не прячьте запросы в свойствах моделей: это почти всегда мина для поддержки 🔧
Правило простое: если место вызова не видно сразу, значит его нужно сделать заметным. Тогда Django остаётся быстрым и предсказуемым, а не превращается в коллекцию сюрпризов.
7 ·