Метод contains

Метод contains применяется к QuerySet и возвращает новый QuerySet, содержащий объекты, у которых значение поля содержит указанную подстроку. Поиск выполняется с учётом регистра. Для регистронезависимого поиска используется метод icontains. Метод можно вызывать цепочкой для уточнения условий выборки.

Синтаксис

pythonModel.objects.filter(field__contains='substring')

Пример

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

pythonfrom myapp.models import Article

res = Article.objects.filter(title__contains='Django')
for article in res:
  print(article.title)

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

python"article 1"
"article 2"

Пример

Найдём все статьи, содержимое которых содержит подстроку "python" с учётом регистра:

pythonfrom myapp.models import Article

res = Article.objects.filter(content__contains='python')
for article in res:
  print(f"Title: {article.title}, Content: {article.content[:50]}...")

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

python"Title: Python basics, Content: This article covers Python programming..."
"Title: Python advanced, Content: Dive deeper into Python features..."

Пример

Найдём все статьи, авторы которых содержат подстроку "Petrov", и отсортируем их по дате создания:

pythonfrom myapp.models import Article

res = Article.objects.filter(
  author__contains='Petrov'
).order_by('created_at')
for article in res:
  print(f"{article.author}: {article.title}")

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

python"Ivan Petrov: Django basics"
"Petr Petrov: Advanced Django"

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

  • метод icontains,
    который выполняет регистронезависимый поиск по подстроке
  • метод startswith,
    который ищет записи, начинающиеся с указанной подстроки
  • метод endswith,
    который ищет записи, заканчивающиеся на указанную подстроку
  • метод exact,
    который выполняет точное сравнение значений полей