РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
99 of 818 menu

Лукап iexact

Лукап iexact применяется к полям модели в запросах filter, exclude и других, выполняет регистронезависимое точное сравнение. В качестве аргумента принимает строку, с которой сравнивается значение поля. Поддерживается всеми текстовыми полями: CharField, TextField, EmailField и другими. При сравнении игнорируется регистр символов, что особенно полезно при поиске по пользовательскому вводу.

Синтаксис

Model.objects.filter(field__iexact="value")

Пример . Модель

Для демонстрации работы лукапа определим модель статьи:

from django.db import models class Article(models.Model): title = models.CharField(max_length=200) slug = models.SlugField(unique=True) content = models.TextField() category = models.CharField(max_length=100) created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return self.title

Пример . С полем title

Найдём статью с заголовком "Django Basics", игнорируя регистр:

from myapp.models import Article # Поиск с точным совпадением без учёта регистра articles = Article.objects.filter(title__iexact="django basics") for article in articles: print(article.title)

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

"Django Basics"

Пример . С полем category

Выберем все статьи категории "Web Development" без учёта регистра:

from myapp.models import Article # Поиск категорий с игнорированием регистра web_articles = Article.objects.filter(category__iexact="web development") for article in web_articles: print(f"{article.title} - {article.category}")

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

"Building REST API - Web Development" "Advanced Django - Web Development"

Сравнение с точным лукапом exact

В отличие от iexact, лукап exact учитывает регистр символов:

from myapp.models import Article # Точный поиск с учётом регистра (не найдёт) res_exact = Article.objects.filter(title__exact="django basics") print(res_exact) # Регистронезависимый поиск (найдёт) res_iexact = Article.objects.filter(title__iexact="django basics") print(res_iexact)

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

"<QuerySet []>" "[<Article: Django Basics>]"

Пример . С исключением

Исключим статьи с категорией "Draft", игнорируя регистр:

from myapp.models import Article # Исключаем категорию Draft в любом регистре published = Article.objects.exclude(category__iexact="draft") for article in published: print(article.title)

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

"Django Basics" "Building REST API"

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

  • лукап exact,
    который выполняет регистрозависимое точное сравнение
  • лукап contains,
    который проверяет вхождение подстроки с учётом регистра
  • лукап icontains,
    который проверяет вхождение подстроки без учёта регистра
  • лукап startswith,
    который проверяет начало строки с учётом регистра
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить