Набор запросов Django ничего не возвращает для символа 'i' в CharField - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь написать вид поиска, чтобы найти записи, отфильтровывая их по иконкам в CharField в таблице sqlite.Но некоторые записи начинаются с 'İ', и набор запросов ничего не возвращает, когда пользователь отправляет форму поиска с набором 'i' вместо 'İ' .

Если запись начинается сПредставление 'i' выполняется правильно.

Также я запустил SQL-запрос для той же таблицы с использованием LIKE, но запрос ничего не дал.

Django 2.0 Sqlite 3

Редактировать1: icontains нечувствителен к регистру, но он проверяет на «I», если слово имеет символ «i», но мне нужно, чтобы он проверял на «İ».Также он не проверяет, набираете ли вы «ı» для «I».

Я изменил свое мнение и добавил этот код для «i» - «İ», и это работает.Но должно быть другое решение этой проблемы вместо этого обходного пути.

if query.startswith('i'):
        text = query[:0] + 'İ' + query[1:]

1 Ответ

0 голосов
/ 05 декабря 2018

Вы можете преобразовать акцентированный символ в ASCII с помощью unidecode ()

import unidecode
accented_string = 'İ'
unaccented_string = unidecode.unidecode(accented_string)
YourClass.objects.get(text__icontains=unaccented_string)
...