Как показать график годового темпа роста, используя высокие графики в Django? - PullRequest
0 голосов
/ 02 апреля 2019

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

models.py

import datetime
from django.db import models
from django.core.validators import MaxValueValidator, MinValueValidator


def current_year():
    return datetime.date.today().year


def max_value_current_year(value):
    return MaxValueValidator(current_year())(value)

class Branch(models.Model):

    branch_id = models.IntegerField()
    name = models.CharField(max_length=50)
    sales_amount = models.IntegerField()
    date = models.PositiveIntegerField(
        default=current_year(), validators=[MinValueValidator(1984), max_value_current_year])

views.py

from django.db.models import Count, Q, Sum
from django.shortcuts import render
import json

from .models import Branch



def index(request):
    dataset = Branch.objects.values('date', 'sales_amount').annotate( sales=Count('sales_amount'))

    categories = list()
    sales = list()

    for entry in dataset:

        categories.append('Year %s' % entry['date'])
        sales.append(entry['sales_amount'])


    return render(request, 'index.html', {
        'categories': json.dumps(categories),
        'sales': json.dumps(sales),
    })

index.html

{% load static %}
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>HomePage</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" media="screen" href="main.css">
    <script src = "{% static 'js/jquery.min.js' %}"></script>
</head>
<body>
    <div id="container" ></div>
    <script src = "{% static 'highcharts/code/highcharts.js' %}"></script>
    <script>
        Highcharts.chart('container', {
            chart: {
                type: 'column'
            },
            title: {
                text: 'Annual Sales Growth'
            },
            xAxis: {
                categories: {{ categories|safe }}
            },
            series: [{
                name: 'Total Sales',
                data: {{ sales }},
                color: 'green'
            },
            ]
        });
    </script>
</body>
</html>



Ожидаемый результат: если в 2015 году у меня будет две ветви, у меня должно быть 2 ветви гистограммы.И если я добавлю новый экземпляр ветви в 2016 году, должно появиться три столбца гистограммы (два предыдущих и недавно добавленные) или два, если я удалил один из экземпляров.Но фактический результат, который я имею, есть, есть отдельный бар для отдельного года.Например: если в 2015 году имеется два экземпляра филиала, а в 2016 году - один экземпляр филиала, в нем отображаются три отдельных филиала, два столбца в 2015 году и один в 2016 году.

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