如何在Django ORM中使用通配符搜索单个字符替换(_)?

时间:2019-07-10 08:42:23

标签: python django django-models wildcard django-orm

在某些情况下,我需要使用Django ORM进行通配符搜索。

我有一列-column1,其中包含手机号码。

我需要对_中的MySQL中的单个字符替换进行通配符搜索。

我可以像Mobilenumbers.objects.raw('SELECT * FROM MOBILENUMBERS WHERE COLUMN1 LIKE '98765_7644')那样做。但是我该如何在Django ORM中做同样的事情。

这不是Wildcard searching in Django的副本。

1 个答案:

答案 0 :(得分:1)

您可以使用__regex lookup [Django-doc],例如:

Mobilenumbers.objects.filter(
    column1__regex=r'^98765.7644$'
)

您甚至可以进一步限制它,以仅允许数字作为通配符:

Mobilenumbers.objects.filter(
    column1__regex=r'^98765\d7644$'
)

^$分别是开始和结束,用于指定字符串以987...开头和以...644结尾

\d仅匹配数字。因此,这意味着最后一个正则表达式将匹配9876547644,但不匹配 98765a7644