Я пытаюсь отфильтровать набор запросов на основе, если одно из его имен полей находится в списке строчных значений. Проблема в том, что некоторые из этих значений полей имеют заглавные буквы, поэтому я не могу сделать

all_listings = all_listings.objects.filter(make__name__in=makes)

Есть ли способ сказать что-то вроде

all_listings = all_listings.objects.filter(make__name__lower__in=makes)
1
TJB 24 Апр 2017 в 17:23

2 ответа

Лучший ответ

Вы можете попробовать использовать Lower func

from django.db.models.functions import Lower

all_listings = all_listings.objects.annotate(name_lower=Lower('make__name')).filter(name_lower__in=makes)
3
Dima Kudosh 24 Апр 2017 в 14:42

Ты можешь сделать

all_listings = all_listings.objects.filter(make__name__iregex=r'(' + '|'.join(makes) + ')')
1
itzMEonTV 24 Апр 2017 в 14:34