Класс Upper

Класс Upper применяется в аннотациях и агрегациях QuerySet для преобразования строкового значения поля в верхний регистр. Этот класс наследуется от Func и генерирует SQL-выражение UPPER, которое выполняется на стороне базы данных. Класс принимает одно или несколько выражений в качестве аргументов и возвращает преобразованную строку в верхнем регистре.

Синтаксис

pythonfrom django.db.models.functions import Upper

Upper(expression, **extra)

Пример . С преобразованием поля

Допустим, у нас есть модель статьи с полем title, и мы хотим преобразовать все заголовки в верхний регистр:

pythonfrom django.db.models.functions import Upper
from myapp.models import Article

articles = Article.objects.annotate(
  title_upper=Upper('title')
).values('title', 'title_upper')

for article in articles:
  print(article['title_upper'])

Результат выполнения кода:

python"ПЕРВАЯ СТАТЬЯ"
"ВТОРАЯ СТАТЬЯ"
"ТРЕТЬЯ СТАТЬЯ"

Пример . С преобразованием в условиях фильтрации

Преобразуем строку в верхний регистр и используем её в условии фильтрации:

pythonfrom django.db.models.functions import Upper
from myapp.models import Article

articles = Article.objects.annotate(
  upper_title=Upper('title')
).filter(upper_title='НОВОСТИ')

for article in articles:
  print(article.title)

Результат выполнения кода:

python"Новости"

Пример . С преобразованием нескольких полей

Преобразуем в верхний регистр сразу два поля - заголовок и описание:

pythonfrom django.db.models.functions import Upper
from myapp.models import Article

articles = Article.objects.annotate(
  title_upper=Upper('title'),
  description_upper=Upper('description')
).values('title_upper', 'description_upper')

for article in articles:
  print(f"{article['title_upper']}: {article['description_upper']}")

Результат выполнения кода:

python"ПЕРВАЯ СТАТЬЯ: ЭТО ОПИСАНИЕ ПЕРВОЙ СТАТЬИ"
"ВТОРАЯ СТАТЬЯ: ОПИСАНИЕ ВТОРОЙ СТАТЬИ"

Смотрите также

  • класс Lower,
    который преобразует строку в нижний регистр
  • класс Length,
    который возвращает длину строкового поля
  • класс Trim,
    который удаляет пробелы в начале и конце строки
  • класс Concat,
    который объединяет несколько строковых полей