Запрос unaccent позволяет вам выполнять поиск, игнорирующий акцентные знаки, с помощью специального расширения PostgreSQL.
Данный запрос реализован с помощью Transform, таким образом он может быть подключен к другим функциям запроса. Для того, чтобы воспользоваться этим запросом, вам потребуется добавить 'django.contrib.postgres' в параметр конфигурации INSTALLED_APPS и активировать расширений unaccent в PostgreSQL Существует миграция UnaccentExtension, которая позволяет выполнить активацию запроса с помощью механизма миграций.
Запрос unaccent может быть использован на CharField и на TextField:
>>> City.objects.filter(name__unaccent="México")
['<City: Mexico>']
>>> User.objects.filter(first_name__unaccent__startswith="Jerem")
['<User: Jeremy>', '<User: Jérémy>', '<User: Jérémie>', '<User: Jeremie>']
Предупреждение
Запросы unaccent должны хорошо работать в большинстве случаев. Однако, использующие этот фильтр запросы обычно будут выполнять полное сканирование таблицы, что не так быстро происходит на больших таблицах. В таких случаях целесообразно применять соответствующие инструменты для полнотекстового поиска.
Mar 31, 2016