Лукап startswith
Лукап startswith применяется в методах фильтрации QuerySet,
таких как filter и exclude. Он проверяет,
начинается ли значение строкового поля с указанной подстроки.
Поиск выполняется с учетом регистра, то есть "Article"
и "article" считаются разными строками.
Синтаксис
Model.objects.filter(field__startswith='substring')
Пример . С моделью Article
Рассмотрим модель статьи с полем заголовка:
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
Допустим, в базе данных есть статьи с заголовками:
"Python для начинающих"
"Python и Django"
"Django ORM"
"Flask vs Django"
Найдем все статьи, заголовки которых начинаются со слова "Python":
from myapp.models import Article
articles = Article.objects.filter(title__startswith='Python')
for article in articles:
print(article.title)
Результат выполнения кода:
"Python для начинающих"
"Python и Django"
Пример . С полным путем
Найдем статьи, в которых содержание начинается с определенного текста:
from myapp.models import Article
articles = Article.objects.filter(content__startswith='Введение')
for article in articles:
print(article.title)
Пример . С комбинированным поиском
Можно комбинировать startswith с другими условиями:
from myapp.models import Article
from datetime import date
articles = Article.objects.filter(
title__startswith='Python',
created_at__date__gte=date(2025, 1, 1)
)
for article in articles:
print(f"{article.title} - {article.created_at}")
Результат выполнения кода:
"Python для начинающих - 2025-01-15 10:30:00"
"Python и Django - 2025-02-20 14:20:00"
Пример . С исключением
Исключим статьи, заголовки которых начинаются с "Python":
from myapp.models import Article
articles = Article.objects.exclude(title__startswith='Python')
for article in articles:
print(article.title)
Результат выполнения кода:
"Django ORM"
"Flask vs Django"
Смотрите также
-
лукап
istartswith,
который выполняет поиск без учета регистра -
лукап
endswith,
который ищет строки, заканчивающиеся на подстроку -
лукап
icontains,
который ищет строки, содержащие подстроку без учета регистра -
лукап
exact,
который выполняет точное сравнение строк