Django Опустите обе стороны оператора фильтрации строк
У меня есть набор запросов, к которому я пытаюсь применить фильтр, примерно так:
filter = {f"{property_name}__iexact": cls._cast_field(filter_value, str)}
_cast_field - это функция следующего вида:
@classmethod
def _cast_field(self, field, _type):
if isinstance(field, _type) or isinstance(field, QuerySet):
casted_field = field
else:
casted_field = _type(field)
if isinstance(casted_field, str):
casted_field = casted_field.lower()
return casted_field
Пока все отлично. Набор запросов будет искать, где свойство является точным совпадением с опущенной строкой.
Но что если я также хочу понизить значение данных внутри столбца, а также значение, по которому он фильтруется. Я не уверен, что это правильный способ написать это, но что-то вроде
select * from foo_bar where lower(column) = lower('Foo_Bar')