Лукап date
Лукап date применяется к полям типа DateTimeField в QuerySet и позволяет фильтровать записи по дате, игнорируя время. Он извлекает только дату из DateTimeField и сравнивает её с заданным значением. Лукап date часто используется в комбинации с другими операторами поиска, такими как gte, lte, gt, lt, exact и другими.
Синтаксис
Model.objects.filter(field_name__date__lookup=value)
Пример
Давайте отфильтруем статьи, созданные в определенную дату:
from myapp.models import Article
from datetime import date
# Получаем статьи, созданные 2026-01-15
articles = Article.objects.filter(created_at__date=date(2026, 1, 15))
for article in articles:
print(article.title)
Результат выполнения кода:
"article 1"
"article 3"
Пример
Давайте отфильтруем статьи, созданные после определенной даты:
from myapp.models import Article
from datetime import date
# Получаем статьи, созданные после 2026-01-01
articles = Article.objects.filter(created_at__date__gt=date(2026, 1, 1))
for article in articles:
print(article.title)
Результат выполнения кода:
"article 1"
"article 2"
"article 3"
Пример
Давайте отфильтруем статьи, созданные в диапазоне дат:
from myapp.models import Article
from datetime import date
# Получаем статьи, созданные с 2026-01-01 по 2026-01-31
articles = Article.objects.filter(
created_at__date__gte=date(2026, 1, 1),
created_at__date__lte=date(2026, 1, 31)
)
for article in articles:
print(article.title)
Результат выполнения кода:
"article 1"
"article 2"
Пример
Давайте отфильтруем статьи, созданные в указанном месяце и году:
from myapp.models import Article
from datetime import date
# Получаем статьи, созданные в январе 2026 года
articles = Article.objects.filter(
created_at__date__gte=date(2026, 1, 1),
created_at__date__lt=date(2026, 2, 1)
)
for article in articles:
print(article.title)
Результат выполнения кода:
"article 1"
"article 2"