Класс Lower
Класс Lower в Django представляет собой выражение базы данных,
которое преобразует строковое значение поля в нижний регистр.
Он применяется внутри методов annotate и filter,
позволяя выполнять операции с текстом, игнорируя регистр символов.
Класс принимает одно обязательное выражение или имя поля,
которое будет преобразовано. Результат работы Lower
может использоваться для сортировки, фильтрации или вывода данных.
Синтаксис
from django.db.models import Lower
Lower(expression)
Пример
Давайте преобразуем названия статей в нижний регистр и сохраним их в новом поле внутри QuerySet:
from myapp.models import Article
from django.db.models import Lower
articles = Article.objects.annotate(
lower_title=Lower('title')
).values('title', 'lower_title')
for item in articles:
print(item)
Результат выполнения кода:
{'title': 'Hello World', 'lower_title': 'hello world'}
{'title': 'Django ORM', 'lower_title': 'django orm'}
Пример
Отфильтруем статьи, название которых в нижнем регистре содержит слово "django":
from myapp.models import Article
from django.db.models import Lower
res = Article.objects.annotate(
lower_title=Lower('title')
).filter(lower_title__icontains='django')
for article in res:
print(article.title)
Результат выполнения кода:
"Best Django practices"
"Django for beginners"
Пример
Отсортируем статьи по названию в нижнем регистре без учета регистра:
from myapp.models import Article
from django.db.models import Lower
res = Article.objects.order_by(
Lower('title')
).values('title')
for item in res:
print(item['title'])
Результат выполнения кода:
"Article about Python"
"Best Django tips"
"django and orm"
"Zebra project"