Лукап contains
Лукап contains применяется к полям модели для поиска
записей, содержащих указанную подстроку. По умолчанию
поиск чувствителен к регистру, поэтому для поиска без
учёта регистра используется лукап icontains.
Лукап работает с полями типов CharField,
TextField и другими текстовыми полями.
Аргументы передаются в виде ключевого параметра,
где ключ - это имя поля с суффиксом __contains,
а значение - искомая подстрока.
Синтаксис
Model.objects.filter(field__contains='substring')
Пример
Пусть у нас есть модель Article с полем title.
Найдём статьи, заголовок которых содержит слово "Django":
from myapp.models import Article
articles = Article.objects.filter(title__contains='Django')
for article in articles:
print(article.title)
Результат выполнения кода:
"Working with Django"
"Django best practices"
"Advanced Django"
Пример
Найдём статьи, в содержании которых встречается фраза "database":
from myapp.models import Article
articles = Article.objects.filter(content__contains='database')
for article in articles:
print(article.title)
Результат выполнения кода:
"Database optimization"
"Using database"
Пример
Найдём статьи с точным совпадением заголовка, содержащего "SQL" (чувствительно к регистру):
from myapp.models import Article
articles = Article.objects.filter(title__contains='SQL')
res = articles.values('title', 'id')
for item in res:
print(item)
Результат выполнения кода:
{'id': 5, 'title': 'SQL performance'}
{'id': 8, 'title': 'SQL vs NoSQL'}
Смотрите также
-
лукап
icontains,
который выполняет поиск подстроки без учёта регистра -
лукап
startswith,
который ищет записи, начинающиеся с указанной подстроки -
лукап
endswith,
который ищет записи, заканчивающиеся на указанную подстроку -
лукап
exact,
который выполняет точное совпадение со строкой