Лукап iregex
Лукап iregex применяется к QuerySet и возвращает новый QuerySet, содержащий объекты, которые соответствуют переданному регулярному выражению без учета регистра. Данный лукап работает только с базами данных PostgreSQL, так как использует оператор ~*. Аргумент передается в виде строки с регулярным выражением, где ключ - имя поля с оператором iregex, а значение - строка регулярного выражения.
Синтаксис
Model.objects.filter(field__iregex='pattern')
Пример
Давайте найдем все статьи, заголовки которых содержат слово "django" (в любом регистре):
from myapp.models import Article
articles = Article.objects.filter(title__iregex=r'\mdjango\M')
for article in articles:
print(article.title)
Результат выполнения кода:
"Django для начинающих"
"Уроки по DJANGO"
"django ORM"
Пример
Давайте найдем пользователей, у которых email заканчивается на ".ru" или ".com" (без учета регистра):
from myapp.models import User
users = User.objects.filter(email__iregex=r'\.(ru|com)$')
for user in users:
print(user.email)
Результат выполнения кода:
"ivan@mail.ru"
"petr@yandex.RU"
"alex@google.COM"
"john@example.com"
Пример
Давайте найдем категории, названия которых содержат цифры от 0 до 9:
from myapp.models import Category
categories = Category.objects.filter(name__iregex=r'\d+')
for category in categories:
print(category.name)
Результат выполнения кода:
"Категория 1"
"Раздел 2"
"Тема 2025"
Смотрите также
-
лукап
regex,
который выполняет поиск по регулярному выражению с учетом регистра -
лукап
contains,
который выполняет поиск по подстроке с учетом регистра -
лукап
icontains,
который выполняет регистронезависимый поиск по подстроке -
лукап
startswith,
который проверяет начало строки на совпадение