Лукап iso_year
Лукап iso_year применяется к полям типа DateField и DateTimeField в запросах фильтрации. Он позволяет отбирать записи по ISO году, который может отличаться от календарного года. Лукап используется в паре с именем поля через двойное подчеркивание.
Параметры: значение должно быть целым числом, представляющим ISO год. Лукап работает со всеми операторами сравнения, такими как exact, gt, gte, lt, lte.
Синтаксис
Model.objects.filter(field_name__iso_year=year_value)
Пример
Допустим, у нас есть модель статьи с полем даты публикации:
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=200)
published_at = models.DateTimeField()
def __str__(self):
return self.title
Отфильтруем статьи, опубликованные в ISO году 2024:
from myapp.models import Article
res = Article.objects.filter(published_at__iso_year=2024)
for article in res:
print(article.title)
Результат выполнения кода:
"First article"
"Second article"
"Third article"
Пример
Используем сравнение для выборки статей за ISO годы начиная с 2025:
from myapp.models import Article
res = Article.objects.filter(published_at__iso_year__gte=2025)
print(res.values_list('title', flat=True))
Результат выполнения кода:
["Article from 2025", "Article from 2026"]
Пример
Используем диапазон ISO годов для выборки записей:
from myapp.models import Article
res = Article.objects.filter(
published_at__iso_year__range=(2023, 2025)
)
print(res.count())
Результат выполнения кода:
"12"
Смотрите также
-
лукап
year,
который фильтрует по календарному году -
лукап
iso_week_day,
который фильтрует по дню недели в ISO стандарте -
лукап
week,
который фильтрует по номеру недели -
лукап
week_day,
который фильтрует по дню недели