Лукап contains

Лукап contains применяется к полям модели для поиска записей, содержащих указанную подстроку. По умолчанию поиск чувствителен к регистру, поэтому для поиска без учёта регистра используется лукап icontains. Лукап работает с полями типов CharField, TextField и другими текстовыми полями. Аргументы передаются в виде ключевого параметра, где ключ - это имя поля с суффиксом __contains, а значение - искомая подстрока.

Синтаксис

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

Пример

Пусть у нас есть модель Article с полем title. Найдём статьи, заголовок которых содержит слово "Django":

pythonfrom myapp.models import Article

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

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

python"Working with Django"
"Django best practices"
"Advanced Django"

Пример

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

pythonfrom myapp.models import Article

articles = Article.objects.filter(content__contains='database')
for article in articles:
  print(article.title)

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

python"Database optimization"
"Using database"

Пример

Найдём статьи с точным совпадением заголовка, содержащего "SQL" (чувствительно к регистру):

pythonfrom myapp.models import Article

articles = Article.objects.filter(title__contains='SQL')
res = articles.values('title', 'id')
for item in res:
  print(item)

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

python{'id': 5, 'title': 'SQL performance'}
{'id': 8, 'title': 'SQL vs NoSQL'}

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

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