проблема при рендеринге данных из django моделей на график. js с использованием Django - PullRequest
0 голосов
/ 12 февраля 2020

Я новичок 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 на графике. Любой может помочь мне в этом, где я не прав.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...