DRF регулярное выражение - PullRequest
0 голосов
/ 05 июля 2018

Мне нужно искать и возвращать мои товары в определенном порядке, и у меня есть регулярное выражение для обработки поиска, проблема в том, что я не уверен, как применить его к полю поиска в DRF search_filters.

Вот регулярное выражение, которое я хотел бы использовать "^(?P<name>\w+ ?,?)" - любое имя, которое начинается с введенного текста и, возможно, заканчивается пробелом или запятой. Если возможно, я также хотел бы применить маркерный порядок, поэтому «рис», «рис» и «рис» возвращаются перед «ricenoodle».

Я пытаюсь использовать такое регулярное выражение search_fields = ['^(?P<name>\w+ ?,?)'], но все, что я получаю, это ошибка вроде Cannot resolve keyword '(?P<name>\w+ ?,?)$' into field.

DRF заявляет, что для использования регулярных выражений мне нужно использовать «$ name», и у него есть ссылка на django docs, которые имеют 0 сведений о том, как создавать поля поиска с помощью регулярных выражений (https://docs.djangoproject.com/en/2.0/ref/contrib/admin/#django.contrib.admin.ModelAdmin.search_fields).

Как мне построить search_fields?

1 Ответ

0 голосов
/ 05 июля 2018

По умолчанию DRF возвращает нечувствительные к регистру частичные совпадения с вашим полем поиска, и параметр поиска может содержать несколько поисковых терминов, которые должны быть разделены пробелами и / или запятыми. Если используется несколько поисковых терминов, объекты будут возвращены в список, только если все предоставленные термины совпадают.

  1. '^' Начинается с поиска.
  2. '=' Точные совпадения.
  3. '@' Полнотекстовый поиск. (В настоящее время поддерживается только MySQL от Django бэкенд.)
  4. '$' Regex search.

пример:

search_fields = ('=username', '=email')

вы можете найти больше шаблонов поиска и как использовать здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...