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

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

enter image description here

Я хочу, чтобы пользователь мог выбрать оператор OR/AND. При поиске я не хочу, чтобы страница обновлялась. Какова наилучшая техника для этого? Ajax, rest framework, или что-то еще...?

Этот вопрос очень расплывчатый, поэтому вот обзор основных шагов:

  • На фронтенде есть форма со всеми желаемыми фильтрами
  • При обновлении фильтра или при отправке формы, отправьте GET запрос на сервер Django со всеми вашими параметрами, закодированными в URL (как типичный GET запрос)

Затем, на стороне сервера (т.е. Django), предполагая, что вы используете Django Rest Framework:

  • Создайте представление/действие (через API View или Viewset) для исследования фильтров
  • .
  • Извлеките фильтры, отправленные фронтендом, которые будут расположены в request.query_params
  • .
  • Выполните запрос в вашей базе данных на основе этих фильтров:
    • Вы знаете, какие фильтры ожидаются
    • Для каждого из них, если он не пуст, выполните дополнительный filter на вашей модели (Model.objects.filter(X=Y))
    • Затем, в конце концов, верните результаты

В Django и DRF есть много способов сделать фильтрацию модели:

  • Вы можете использовать Q для выполнения сложных запросов
  • Вы можете использовать пакет django-filters для простого добавления фильтрации в ваш набор представлений на основе полученных параметров GET
Вернуться на верх