Как я могу реализовать расширенный поиск в django?

#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