Разделите блоги по годам в списке queryset

Я создаю приложение для блогов и пытаюсь разделить блоги по году их создания. например :-

2022
    First Blog
    Second Blog
2021
    Third Blog
    Fifth Blog

Это может быть в словаре списка, как :-

[
    "2022": {
            "title": "First Blog",
            "title": "Second Blog",
        },
    "2021": {
            "title": "Fifth Blog",
            "title": "Second Blog",
        }
]

models.py

class Blog(models.Model):
    title = models.CharField(max_length=100, default='')
    date = models.DateTimeField(auto_now_add=True)

views.py

def get_blogs(request):
    blogs_by_year = Blog.objects.annotate(
            year=TruncMonth('date')).annotate(
                blogs=Count('title')).values("year", "blogs")

    return blogs_by_year

Но он показывает отдельные результаты, например

<QuerySet [{'year': datetime.datetime(2023, 1, 1, 0, 0, 0, tzinfo=zoneinfo.ZoneInfo(key='UTC')), 'blogs': 1}, {'year': datetime.datetime(2023, 1, 1, 0, 0, 0, tzinfo=zoneinfo.ZoneInfo(key='UTC')), 'blogs': 1}]>

.

Но я пытаюсь разделить их по годам.

Нужно ли разделять блоги по годам с помощью for loop, а затем фильтровать по годам и добавлять в список словаря?

Я прочитал страницу DateField truncation, но ничего не получилось.

Вернуться на верх