Метод contains
Метод contains применяется к QuerySet и возвращает
новый QuerySet, содержащий объекты, у которых значение
поля содержит указанную подстроку. Поиск выполняется
с учётом регистра. Для регистронезависимого поиска
используется метод icontains. Метод можно вызывать
цепочкой для уточнения условий выборки.
Синтаксис
Model.objects.filter(field__contains='substring')
Пример
Давайте найдём все статьи, заголовок которых содержит слово "Django":
from myapp.models import Article
res = Article.objects.filter(title__contains='Django')
for article in res:
print(article.title)
Результат выполнения кода:
"article 1"
"article 2"
Пример
Найдём все статьи, содержимое которых содержит подстроку "python" с учётом регистра:
from myapp.models import Article
res = Article.objects.filter(content__contains='python')
for article in res:
print(f"Title: {article.title}, Content: {article.content[:50]}...")
Результат выполнения кода:
"Title: Python basics, Content: This article covers Python programming..."
"Title: Python advanced, Content: Dive deeper into Python features..."
Пример
Найдём все статьи, авторы которых содержат подстроку "Petrov", и отсортируем их по дате создания:
from 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}")
Результат выполнения кода:
"Ivan Petrov: Django basics"
"Petr Petrov: Advanced Django"
Смотрите также
-
метод
icontains,
который выполняет регистронезависимый поиск по подстроке -
метод
startswith,
который ищет записи, начинающиеся с указанной подстроки -
метод
endswith,
который ищет записи, заканчивающиеся на указанную подстроку -
метод
exact,
который выполняет точное сравнение значений полей