Django 反向正则表达式匹配

Fil*_*nel 3 python regex sql django

我有一个表(Django 模型),每行/对象都包含一个正则表达式,我应该对给定的输入进行评估以过滤相关对象。

是否有任何 Django ORM 方法可以做到这一点?

在 Postgre 中,它将是:

SELECT * FROM 'value' ~ column;
Run Code Online (Sandbox Code Playgroud)

与我正在寻找的相反的是:

Model.objects.filter(column__regex='regex')
Run Code Online (Sandbox Code Playgroud)

我知道在应用程序端评估正则表达式会提供与查询相似的性能,但我的应用程序设计要求我在数据库端移动该过滤器(作为适当的基于 ORM 的查询)。

任何想法如何使用 Django 实现?

谢谢!

此致,

Wil*_*sem 5

我们可以使用.annotate(..)“注入”一个值,然后使用 - 表达式F来引用该列:

from django.db.models import CharField, Value, F

Model.objects.annotate(
    value=Value('value', output_field=CharField())
).filter(
    value__regex=F('regex')
)
Run Code Online (Sandbox Code Playgroud)