
JSONField в Django: рабочие приёмы и типичные ошибки
Как хранить и запрашивать полуструктурированные данные в JSONField без сюрпризов: индексы, фильтры по вложенным ключам, разница между null и валидацией.

Как хранить и запрашивать полуструктурированные данные в JSONField без сюрпризов: индексы, фильтры по вложенным ключам, разница между null и валидацией.

django-filter удобен на прототипе и коварен под нагрузкой: незаметный N+1, фильтр по всем полям и параметры, которые ловят SQL-инъекцию через ORM. Разбираем, что проверить до релиза.

Поиск на icontains ложится под нагрузкой и не находит «телефоны» по запросу «телефон». Разбираем, как перейти на полнотекстовый поиск PostgreSQL средствами Django и что за это платить.

Как задать фильтрацию списка в Django REST Framework: чистый FilterSet, method-фильтры, аннотации и raw-запросы. Что выиграете и чем заплатите в каждом случае.

SearchVector без индекса, поиск через icontains и молчаливая работа только с английским. Разбираем ошибки полнотекстового поиска в Django на PostgreSQL и как их чинить.

Как построить фильтрацию в DRF на django-filter без лишних запросов к базе, с корректной фильтрацией по датам, диапазонам и связанным моделям — и где типовой FilterSet ломается на проде.

Как подключить drf-spectacular к Django REST Framework, получить корректную схему OpenAPI 3 и починить типичные места, где генератор угадывает неправильно.

Штатный троттлинг Django REST Framework часто не работает так, как ждёт разработчик: лимиты сбрасываются при перезапуске, считаются на процесс, а IP берётся из заголовка, который легко подделать.

Дефолтный throttling в Django REST Framework хранит счётчики в LocMemCache, ломается при нескольких воркерах и не различает клиентов за одним IP. Разбираем, что проверить до релиза.

Встроенные классы throttling в Django REST Framework решают базовую задачу, но ломаются на распределённом трафике и хитрых лимитах. Разбираем, где предел стандартных решений и когда пора уходить в отдельный слой.

Один эндпоинт заказа тянет за собой позиции, товары и покупателя. Как отдавать вложенные данные в DRF без сотен запросов и не сломать запись — четыре подхода с ценой каждого.

Вложенные сериализаторы в Django REST Framework легко превращают один запрос в сотни SQL и ломают запись. Разбираем, как читать без N+1, писать с create/update и не тащить лишнее на список.