Django тормозит не в моделях: 5 мест, где обычно течёт время
Частая ошибка — искать проблему только в SQL. В Django узкое место часто прячется в шаблонах, сериализации и лишних запросах на каждый объект. Если страница стала «тяжёлой», сначала смотрите не на красивый код, а на количество обращений к БД и объём данных, который реально проходит через view.
— N+1 в списках: forgot prefetch_related/select_related, и каждый элемент тянет свой запрос.
— Тяжёлые методы модели/свойства: логика внутри __str__, property и template tags вызывается чаще, чем кажется.
— Перетаскивание всего объекта: values() и only() могут помочь, если нужны не все поля.
— Сериализация без фильтрации: DRF-serializer легко раздувает ответ лишними вложенностями.
— Шаблоны с логикой: if/for в template не должны заменять подготовку данных во view.
Полезная привычка: перед оптимизацией включайте счётчик запросов и смотрите, где один экран превращается в десятки обращений. Часто исправление занимает 10 минут: добавить prefetch, вынести вычисление в annotate или перестроить queryset.
Если в Django «всё медленно», почти всегда виноват не фреймворк, а форма запроса и место, где вы считаете данные.
Python Web & Scripts — Django, FastAPI, скрипты
@python_web_scripts
Django тормозит не в моделях: 5 мест, где обычно течёт время
Этот пост опубликован в Telegram-канале Python Web & Scripts — Django, FastAPI, скрипты. Подписаться можно по ссылке: @python_web_scripts.