我正在尝试编写搜索视图以通过在sqlite表的CharField中的icontains进行过滤来查找记录。但是,某些记录以“İ”开头,并且当用户使用'i'而不是'İ'提交搜索表单时,queryset不返回任何内容。
如果记录以“ i”开头,则视图运行正确。
我还使用LIKE对同一张表运行了SQL查询,但查询未返回任何内容。
Django 2.0 SQLite 3
编辑1: icontains不区分大小写,但是如果单词具有'i'字符,它将测试'I',但是我需要使用它来测试'İ'。同样也不会测试您是否为“ I”输入“ı”。
我改变了看法,并为'i'-'İ'添加了此代码,并且可以正常工作。但是,必须有解决此问题的另一种方法,而不是替代方法。
if query.startswith('i'):
text = query[:0] + 'İ' + query[1:]
答案 0 :(得分:0)
您可以通过unidecode()将重音符号转换为ASCII
import unidecode
accented_string = 'İ'
unaccented_string = unidecode.unidecode(accented_string)
YourClass.objects.get(text__icontains=unaccented_string)