django Diango将字符串与正则表达式字段匹配

wj8zmpe1  于 2023-01-03  发布在  Go
关注(0)|答案(1)|浏览(106)

django中,如果我们有一个正则表达式,并查找a字段与正则表达式匹配的行,结果如下:

MyAudience.objects.filter(email__iregex=f'^({'|'.join(emails)})$')

但如果我想用另一种方式呢?
假设我有一个字符串:

email = 'abc@example.com'

在我的模型AudienceFilter中,我有一个字段pattern,这一列保存了模型的正则表达式,我想用模式找到匹配的字符串,我怎么做?

AudienceFilter.objects.filter(pattern__?????=email)
hi3rlvi2

hi3rlvi21#

您可以将值作为别名注入,然后进行注解:

from django.db.models import F, Value

AudienceFilter.objects.alias(email=Value(email)).filter(
    email__iregex=F('pattern')
)

相关问题