Лукап day
Лукап day применяется к полям типа DateField и DateTimeField для фильтрации записей по дню месяца. Он позволяет найти все записи, у которых день месяца совпадает с указанным значением. Лукап используется в сочетании с двойным подчеркиванием в запросах filter, exclude и других методах QuerySet. Значение дня передается в виде целого числа от 1 до 31.
Синтаксис
Model.objects.filter(field__day=value)
Пример
Рассмотрим модель статьи с датой публикации:
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=100)
published_at = models.DateTimeField()
def __str__(self):
return self.title
Найдем все статьи, опубликованные 15 числа любого месяца:
from myapp.models import Article
articles = Article.objects.filter(published_at__day=15)
for article in articles:
print(article.title)
Результат выполнения кода:
"article 1"
"article 2"
Пример
Сочетаем лукап day с другими условиями, например, поищем статьи за март 2026 года:
from myapp.models import Article
from datetime import date
articles = Article.objects.filter(
published_at__year=2026,
published_at__month=3,
published_at__day=15
)
print(articles.values_list('title', flat=True))
Результат выполнения кода:
["article 1", "article 2"]
Пример
Используем лукап day с запросом диапазона для поиска статей, опубликованных в определенный промежуток дней:
from myapp.models import Article
articles = Article.objects.filter(
published_at__day__gte=10,
published_at__day__lte=20
)
for article in articles:
print(article.title)
Результат выполнения кода:
"article 1"
"article 2"
"article 3"