У меня есть список имен, которым я хочу соответствовать нечувствительный к регистру, есть ли способ сделать это, не используя цикл как ниже?
a = ['name1', 'name2', 'name3']
result = any([Name.objects.filter(name__iexact=name) for name in a])
К сожалению, нет __ 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/ .