Как использовать регистронезависимый в работе в django orm? - PullRequest
0 голосов
/ 29 января 2019
User.objects.filter(name__in=["A", "AB", "a", "ab", "Ab"])

Это пример использования поиска поля in в Django.

Но я хочу знать, что здесь есть какой-то трюк использования in без учета регистра, например icontains?

Спасибо

Ответы [ 3 ]

0 голосов
/ 29 января 2019

Согласно совпадению списка без учета регистра для запроса Django другого решения нет, кроме iregex lookup

0 голосов
/ 29 января 2019

Ответы других превосходны.

Я искал другой способ, который использует Функция понижения

lower_list = map(lambda x:x.lower(), ["A", "AB", "a", "ab", "Ab"])
User.objects.annotate(name_lower=Lower('name').filter(name_lower__in=lower_list)

Это просто другой способ.Я думаю, что ответы других людей близки к хорошему ответу.

0 голосов
/ 29 января 2019

Для работы без учета регистра вы можете использовать iregex

User.objects.filter(name__iregex=r'(A|AB|a|ab|Ab)')

Ref: https://docs.djangoproject.com/en/dev/ref/models/querysets/#iregex

Обновление: Вы можете сделать свой поиск.Получите помощь от https://docs.djangoproject.com/en/dev/ref/models/lookups/

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