Как получить целое число из объектов базы данных
Я довольно новичок в 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 также