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

How to do wildcard search for single character replacement ( _ ) in Django ORM?

我有一个案例需要使用 Django ORM 进行通配符搜索。

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

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

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

这是不是Wildcard searching in Django的副本。

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

Mobilenumbers.objects.filter(
    <b>column1__regex=r'^98765.7644$'</b>
)

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

Mobilenumbers.objects.filter(
    column1__regex=r'^98765<b>\d</b>7644$'
)

^$分别是开始和结束锚点指定字符串以987...开始,以987...结束...644.

\d只匹配数字。所以这意味着最后一个正则表达式会匹配 9876547644,但不会匹配 98765a7644.