Сегодня на проекте настроил фильтр записей — по категориям, номерам и диапазонам. База внушительная, больше 3000 записей, но всё работает быстро и без задержек благодаря продуманной логике и оптимизации. Делюсь, как это делал — вдруг пригодится.

Сначала заложил основу: создал модель с нужными полями. Это важно, чтобы данные изначально были структурированы под фильтрацию — категории как текстовое поле, номера как числовое, диапазоны через даты. Дальше подключил инструмент для фильтрации — специальную библиотеку, которая берёт на себя обработку запросов. Она позволяет гибко настраивать условия: поиск по частичному совпадению, точному значению или временным промежуткам.

В серверной части всё просто: собрал представление, которое вытягивает все записи, пропускает их через фильтр на основе данных из формы и возвращает результат. Но фишка в скорости — без оптимизации с таким объёмом записей были бы лаги. Поэтому добавил асинхронные запросы через AJAX: пользователь вводит параметры, фронт отправляет их на сервер, а тот мгновенно выдаёт отфильтрованный список. Никаких перезагрузок страницы — чистый UX.

Для базы тоже пришлось поработать: поставил индексы на поля, по которым идёт фильтрация. Это дало заметный прирост скорости, особенно на диапазонах. Итог — фильтр летает, задержек почти нет, даже с 3000+ записей.

Сегодня на проекте настроил фильтр записей — по категориям, номерам и диапазонам | Сетка — социальная сеть от hh.ru