Я новичок django. Я хочу показать группу по данным на chart.js bar graph
. Я пробую .annotate
в views.py
, но не нашел подходящего решения. Я использую PostgreSQL
.
Вот моя таблица trendmania_sentiments
Теперь я хочу получить количество групп по данным из столбца sentiments_analysis
. Сначала я пишу SQL запрос для группы по данным.
select sentiments_analysis, count(sentiments_analysis) from public.trendmania_sentiments group by sentiments_analysis
вывод:

затем я пишу эквивалент Django запрос в views.py
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["qs"] = Sentiments.objects.values('sentiments_analysis').annotate(cn=Count('sentiments_analysis'))
print(context)
return context
models.py
class Sentiments(models.Model):
user_id = models.PositiveIntegerField(default=0,null=True)
video_id = models.PositiveIntegerField(default=0, null=True)
sentiments_analysis = models.PositiveIntegerField(default=0, null=True)
html file
<script>
$(document).ready(function() {
var ctx = document.getElementById('myChart').getContext('2d');
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ['Negative', 'Positive'],
datasets: [{
label: 'Sentiment Analysis',
data: [{% for item in qs %}{{ item.sentiments_analysis }},{%
endfor %}],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
});
});
</script>
output like

Теперь я получаю только одно значение 0
и 1
из словаря, но не получаю всего count
значений из словаря. Я хочу отобразить общее число как 0
и 1
на графике. Любой может помочь мне в этом, где я не прав.