#django #django-models #django-rest-framework #django-views
Вопрос:
Как я могу реализовать расширенный поиск, подобный приведенному ниже, в Django?
Когда я искал, я не хочу, чтобы страница обновлялась. Какова наилучшая практика для этого? Ajax, фреймворк rest или что-то еще…? Есть ли ссылка?
Комментарии:
1. Я голосую за Вопрос очень общего характера
Ответ №1:
Этот вопрос очень расплывчат, поэтому вот обзор основных шагов:
- На интерфейсе есть форма со всеми необходимыми фильтрами
- При обновлении фильтра или при отправке формы отправьте
GET
запрос на сервер Django со всеми вашими параметрами, закодированными в URL (как типичный запрос GET).
Затем на стороне сервера (т. Е. Django), предполагая, что вы используете платформу Django Rest:
- Создайте представление/действие (через представление API или набор представлений) для вашего исследования фильтра
- Извлеките фильтры, отправленные интерфейсом, который будет расположен в
request.query_params
- Выполните запрос в своей базе данных на основе этих фильтров:
- Вы знаете, какие фильтры ожидаются
- Для каждого из них, если он не пуст, выполните дополнительную
filter
операцию на вашей модели (Model.objects.filter(X=Y)
) - Затем в конечном итоге верните результаты
Существует множество способов фильтрации модели в Django и DRF:
- Вы можете использовать
Q
для выполнения сложных запросов - Вы можете использовать
django-filters
пакет, чтобы легко добавить фильтрацию в свой набор представлений на основе полученных параметров GET