Запрос Django нечувствительное к регистру соответствие списка

У меня есть список имен, которым я хочу соответствовать нечувствительный к регистру, есть ли способ сделать это, не используя цикл как ниже?

a = ['name1', 'name2', 'name3']
result = any([Name.objects.filter(name__iexact=name) for name in a])
34
задан Kevin Brown 23 December 2014 в 01:55
поделиться

1 ответ

К сожалению, нет __ iin поиска по полю. Но есть iregex , который может быть полезен, например:

result = Name.objects.filter(name__iregex=r'(name1|name2|name3)')

или даже:

a = ['name1', 'name2', 'name3']
result = Name.objects.filter(name__iregex=r'(' + '|'.join(a) + ')')

Обратите внимание, что если a может содержать символы, которые являются специальными в регулярном выражении, вам нужно escape их правильно.

НОВОСТИ: В Djano 1.7 можно создавать свои собственные поисковые запросы, поэтому вы можете использовать фильтр (name__iin = ['name1', 'name2', 'name3']) после правильной инициализации. Подробнее см. https://docs.djangoproject.com/en/1.7/ref/models/lookups/ .

40
ответ дан 27 November 2019 в 16:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: