Лукап quarter
Лукап quarter применяется к полям даты и времени для фильтрации записей по номеру квартала. Он извлекает номер квартала из значения поля DateTimeField или DateField и сравнивает его с переданным значением. Лукап работает с датами в часовом поясе, который задан в настройках Django.
Синтаксис
Model.objects.filter(field__quarter=value)
Пример
Давайте отфильтруем статьи, которые были опубликованы в первом квартале (квартал 1):
from myapp.models import Article
q1_articles = Article.objects.filter(published_at__quarter=1)
for article in q1_articles:
print(article.title)
Результат выполнения кода:
"Winter ideas"
"New Year plans"
"Q1 review"
Пример
Давайте отфильтруем статьи, которые были опубликованы во втором квартале (квартал 2):
from myapp.models import Article
q2_articles = Article.objects.filter(published_at__quarter=2)
for article in q2_articles:
print(article.title)
Результат выполнения кода:
"Spring gardening"
"Q2 report"
"Summer preparation"
Пример
Давайте отфильтруем статьи, которые были опубликованы в третьем квартале (квартал 3), и выведем только заголовки и квартал публикации:
from myapp.models import Article
q3_articles = Article.objects.filter(published_at__quarter=3).values('title', 'published_at')
for article in q3_articles:
print(f"Title: {article['title']}, Quarter: {article['published_at'].quarter}")
Результат выполнения кода:
"Title: Autumn harvest, Quarter: 3"
"Title: Q3 results, Quarter: 3"