🔍 Django ModelSearch: Умный поиск для ваших моделей
Django ModelSearch позволяет индексировать модели Django и осуществлять поиск с использованием ORM. Поддерживает PostgreSQL FTS, SQLite FTS5, а также Elasticsearch и OpenSearch. Идеально подходит для создания мощных поисковых решений.
🚀Основные моменты:
- Индексация моделей в Elasticsearch и OpenSearch
- Поддержка автозаполнения и фацетного поиска
- Повторное использование существующих QuerySets
- Поддержка нечеткого и фразового поиска
- Нулевая простоя при перестройке индекса
📌 GitHub: https://github.com/kaedroho/django-modelsearch
Django ModelSearch позволяет индексировать модели Django и осуществлять поиск с использованием ORM. Поддерживает PostgreSQL FTS, SQLite FTS5, а также Elasticsearch и OpenSearch. Идеально подходит для создания мощных поисковых решений.
🚀Основные моменты:
- Индексация моделей в Elasticsearch и OpenSearch
- Поддержка автозаполнения и фацетного поиска
- Повторное использование существующих QuerySets
- Поддержка нечеткого и фразового поиска
- Нулевая простоя при перестройке индекса
📌 GitHub: https://github.com/kaedroho/django-modelsearch
GitHub
GitHub - kaedroho/django-modelsearch: Index Django Models with Elasticsearch or OpenSearch and query them with the ORM
Index Django Models with Elasticsearch or OpenSearch and query them with the ORM - kaedroho/django-modelsearch
28 августа(в четверг) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.
Как это будет:
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot
Реклама. О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
🕸️ Django Tip — ускоряй сложные запросы с помощью `only()` + `defer()`
В Django ORM часто делают
💡 Лайфхак: загружай только нужные поля:
🟢 Что это даёт
⚡ Сильно ускоряет SQL-запросы (SELECT только нужные столбцы).
📉 Экономит память, так как Django не держит ненужные данные.
🔄 Поля можно подгрузить позже — при первом обращении Django сделает отдельный запрос.
💡 Совет: комбинируй only() и defer() для тонкого контроля — так можно оптимизировать даже очень «тяжёлые» модели без переписывания логики.
В Django ORM часто делают
Model.objects.all()
, вытаскивая все поля модели. Но если таблица тяжёлая, это съедает кучу памяти и тормозит. 💡 Лайфхак: загружай только нужные поля:
# Вместо этого
users = User.objects.all()
# Сделай так
users = User.objects.only("id", "username")
А если нужно отложить подгрузку дорогих полей (например, JSON или TextField):
users = User.objects.defer("profile_data", "settings_blob")
⚡ Сильно ускоряет SQL-запросы (SELECT только нужные столбцы).
📉 Экономит память, так как Django не держит ненужные данные.
🔄 Поля можно подгрузить позже — при первом обращении Django сделает отдельный запрос.
💡 Совет: комбинируй only() и defer() для тонкого контроля — так можно оптимизировать даже очень «тяжёлые» модели без переписывания логики.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что это:
Новый инструмент для фильтрации в DRF, который расширяет возможности стандартного
django-filter
. Особенности
- Использует serializer-поля для разбора и валидации (без Django-форм и виджетов)
- Поддержка группировки фильтров для гибкой логики
- Constraint system — проверка взаимозависимостей между параметрами
- Вложенные фильтры (nested filters) для работы со сложными структурами
Последний релиз — v0.6.0 (21 августа 2025)
- Возможность указывать группу по умолчанию для всего
FilterSet
(в том числе глобально) - Поддержка subgroups для более сложных связей между фильтрами
- Новый метод
FilterSet.get_combinator()
для динамического выбора способа объединения фильтров - ⚠️ Breaking change: теперь
Entry
нельзя создавать без указания группы Почему стоит попробовать
Если стандартные фильтры Django REST кажутся ограниченными, rest-filters даёт:
- фильтрацию через сериализаторы,
- сложные сценарии с группировками и вложенностью,
- гибкость и расширяемость.
🔗 Репозиторий: https://github.com/realsuayip/rest-filters
Please open Telegram to view this post
VIEW IN TELEGRAM