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

Лукап icontains

Лукап icontains применяется к полям модели при формировании запросов через filter, exclude и другие методы QuerySet. Он проверяет, содержит ли строковое поле указанную подстроку, игнорируя регистр символов. В качестве аргумента передается строка или выражение, которое будет искаться внутри значения поля. Лукап генерирует SQL-запрос с оператором LIKE, что обеспечивает эффективный поиск в текстовых данных.

Синтаксис

Model.objects.filter(field__icontains='substring')

Пример . С моделью Article

Рассмотрим модель статьи с полем заголовка и содержимого:

from django.db import models class Article(models.Model): title = models.CharField(max_length=200) content = models.TextField() published = models.BooleanField(default=False) def __str__(self): return self.title

Давайте найдем все статьи, в заголовке которых содержится слово "django" независимо от регистра:

from myapp.models import Article articles = Article.objects.filter(title__icontains='django') for article in articles: print(article.title)

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

"Django for Beginners" "Advanced Django Techniques" "Using django REST Framework"

Пример . С регистронезависимостью

Лукап icontains находит подстроку вне зависимости от регистра. Поиск "PYTHON" найдет записи с "Python", "python" и другими вариантами:

from myapp.models import Article res = Article.objects.filter(content__icontains='PYTHON') for article in res: print(f"{article.title}: {article.content[:50]}...")

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

"Python Basics: Python is a powerful programming language..." "Data Science: Using Python for data analysis..."

Пример . С комбинированным условием

Лукап icontains можно комбинировать с другими условиями для более точной фильтрации:

from myapp.models import Article articles = Article.objects.filter( title__icontains='web', published=True ) for article in articles: print(article.title)

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

"Web Development Guide" "Building Web Apps with Django"

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

Используем icontains вместе с exclude для поиска статей, не содержащих определенное слово:

from myapp.models import Article articles = Article.objects.exclude( title__icontains='draft' ) for article in articles: print(article.title)

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

"Final Guide to Django" "Python Web Development"

Пример . С методами values и values_list

Для получения только нужных полей можно использовать values или values_list вместе с icontains:

from myapp.models import Article titles = Article.objects.filter( content__icontains='framework' ).values_list('title', flat=True) for title in titles: print(title)

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

"Django Framework Guide" "Flask vs Django"

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

  • лукап contains,
    который выполняет регистрозависимый поиск подстроки
  • лукап iexact,
    который выполняет регистронезависимое точное сравнение строк
  • лукап istartswith,
    который проверяет, начинается ли строка с указанной подстроки без учета регистра
  • лукап iendswith,
    который проверяет, заканчивается ли строка на указанную подстроку без учета регистра
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить