Лукап day

Лукап day применяется к полям типа DateField и DateTimeField для фильтрации записей по дню месяца. Он позволяет найти все записи, у которых день месяца совпадает с указанным значением. Лукап используется в сочетании с двойным подчеркиванием в запросах filter, exclude и других методах QuerySet. Значение дня передается в виде целого числа от 1 до 31.

Синтаксис

pythonModel.objects.filter(field__day=value)

Пример

Рассмотрим модель статьи с датой публикации:

pythonfrom 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 числа любого месяца:

pythonfrom myapp.models import Article

articles = Article.objects.filter(published_at__day=15)
for article in articles:
    print(article.title)

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

python"article 1"
"article 2"

Пример

Сочетаем лукап day с другими условиями, например, поищем статьи за март 2026 года:

pythonfrom 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))

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

python["article 1", "article 2"]

Пример

Используем лукап day с запросом диапазона для поиска статей, опубликованных в определенный промежуток дней:

pythonfrom 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)

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

python"article 1"
"article 2"
"article 3"

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

  • лукап year,
    который фильтрует записи по году
  • лукап month,
    который фильтрует записи по месяцу
  • лукап week_day,
    который фильтрует записи по дню недели
  • лукап date,
    который фильтрует записи по дате