Лукап istartswith

Лукап istartswith применяется к QuerySet и возвращает новый QuerySet, содержащий объекты, у которых значение поля начинается с определенной подстроки без учета регистра. Он используется в сочетании с методом filter, exclude или другими методами фильтрации. Лукап принимает один аргумент - строку поиска, которая сравнивается с началом значения поля.

Синтаксис

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

Пример

Рассмотрим модель 'Article' с полем 'title' и найдем статьи, название которых начинается с 'django' (регистр не важен):

pythonfrom myapp.models import Article

# Поиск статей, название которых начинается с 'django'
articles = Article.objects.filter(title__istartswith='django')
for article in articles:
  print(article.title)

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

python"Django for beginners"
"django and python"
"DJANGO advanced guide"

Как видите, найдены все статьи, независимо от того, написано название с заглавной буквы, строчными или заглавными буквами.

Пример

Используем лукап istartswith в связке с методом exclude, чтобы исключить записи, начинающиеся с определенной подстроки:

pythonfrom myapp.models import User

# Исключаем пользователей, у которых имя начинается с 'admin'
users = User.objects.exclude(username__istartswith='admin')
for user in users:
  print(user.username)

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

python"user1"
"manager"
"moderator"

Пример

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

pythonfrom myapp.models import Product
from datetime import date

# Ищем товары, название которых начинается с 'smart', и цена больше 500
products = Product.objects.filter(
  name__istartswith='smart',
  price__gt=500
)
for product in products:
  print(f"{product.name}: {product.price}")

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

python"Smartphone: 999"
"Smart TV: 1200"
"SMART watch: 600"

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

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