Как фильтровать с помощью функции в левой части выражения?
Возможно ли выполнить фильтр с помощью Django ORM, используя функцию Replace слева? Для этого нужно выполнить примерно такой запрос:
select * from my_table where replace(field, '-', '') = 'value'
Если я пытаюсь использовать функцию в правой части, внутри функции фильтра, я получаю эту ошибку: keyword can't be an expression
Используйте функцию базы данных Replace для создания аннотированного поля, равного вашей замене, по которому вы можете фильтровать
from django.db.models import Value
from django.db.models.functions import Replace
MyModel.objects.annotate(
field_replaced=Replace('field', Value('-'), Value(''))
).filter(
field_replaced='value'
)