dauren101
@dauren101
Python, Django ,Vue.js

Группировка статей по месяцам в джанго?

Есть статьи, нужно сгруппировать их по месяцам. Т.е вывести список только тех месяцев, в которых есть статьи, затем по переходу на этот месяц, открываются все статьи этого месяца. Это делать в views или в template?И как это сделать?
  • Вопрос задан
  • 1304 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Или без CBV

views.py
from django.shortcuts import render
from django.db.models import Count
from django.db.models.functions import TruncMonth

from .models import Article

def group_by_month(request):
    groups = Article.objects
        .annotate(month=TruncMonth('publication_date'))  # Извлекаем месяц из даты
        .values('month')                                 # Группируем по месяцам
        .annotate(c=Count('id'))                         # Количество статей в месяце

    return render(request, 'monthes.html', {'monthes': groups})


def articles_in_month(request, month):
    articles = Article.objects.filter(publication_date__month=month)
    return render(request, 'articles', {'articles': articles})
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ba1t
@Ba1t
Generic date views
Во вью выбираете статьи, в шаблоне отображаете как надо.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы