Как получить целое число из объектов базы данных

Я довольно новичок в Django и пытаюсь создать базу данных для научных обзоров. Одна из вещей, которую я хотел бы показать, это сколько обзоров было опубликовано в каждом году.

В этом примере я использовал следующие данные:

год: количество опубликованных рецензий
1999: 1
2019: 4
2022: 5

models.py

class Review(models.Model):
    title = models.CharField(max_length=100,null=True)
    doi = models.URLField(max_length=200,unique=True,null=True)
    author = models.CharField("First author",max_length=100,null=True)
    year = models.PositiveIntegerField(null=True)

views.py

from django.shortcuts import render
from .models import Review
from django.db.models import Count

def about(response):
    reviews_year_count = Review.objects.values('year').annotate(Count('year'))
    context = {'reviews_year_count':reviews_year_count}
    return render(response, "main/about.html", context)

reviews.html

<html>
<body>
{{reviews_year_count|join:", "}}
</body>
</html>

вывод на localhost
В настоящее время:

{'year': 1999, 'year__count': 1}, {'year': 2019, 'year__count': 4}, {'year': 2022, 'year__count': 5}

Aim:

1, 4, 5

Я не могу понять, как избавиться от {'year': 1999, 'year__count': } и иметь только целочисленное значение. Я просмотрел страницы документации Django. Одна из вещей, которые я пробовал, это добавить defer() за reviews_year_count = Review.objects.values('year').annotate(Count('year')), но вызов defer() после values() не имеет смысла согласно документации.

Моя цель - использовать данные в качестве входных данных для графика с помощью chartsjs.

Вы можете использовать python для получения только списка значений:

reviews_year_count = Review.objects.values('year').annotate(Count('year'))
reviews_year_count = [i['year__count'] for i in reviews_year_count]

Возможно сделать с django ORM используя values также

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