如何使用表达式左侧的函数进行过滤?

How to filter using a function in the left side of an expression?

可以使用左侧的 Replace 函数使用 Django ORM 执行过滤器吗?它将实现类似这样的查询:

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'
)