Передать набор запросов Django в Highcharts.js --- TypeError: values ​​() не принимает аргументов (1 дано) - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь передать свой набор запросов в highcharts.js.Я могу сделать это, используя метод ниже:

Это мой view.py

class chart_data(object):   # Grabs the Data
def sum_savings():
    data = {'division': [], 'total_actual_savings': [],
             'actual_fte': []}

    cost = BsoCet.objects.annotate(savings=Sum('total_actual_savings'))


    for i in cost:
        data['division'].append(i.division)
        data['total_actual_savings'].append(i.total_actual_savings)
        #data['actual_fte'].append(i.actual_fte)


    return data

def plot(request, chartID = 'chart_ID', chart_type = 'column',chart_height 
     = 500):  
     data = chart_data.sum_savings()

     chart = {
     'chart'  : {"renderTo": chartID, "type": chart_type, "height": 
        chart_height},
     'title'  : {"text": 'Check Cost per Division'},
     'xAxis'  : {"title": {"text": 'Divisions'}, "categories": 
        data['division']},
     'yAxis'  : {"title": {"text": 'Cost'}},
     'series' : [
        {"name": 'Total Actual Savings', "data": 
          data['total_actual_savings']}
        ]
}
return JsonResponse(chart)

Это мой шаблон

<div id="container" data-url="{% url 'BSO:plot' %}"></div>
<script>
  $.ajax({
    url: $("#container").attr("data-url"),
    dataType: 'json',
    success: function (data) {
      Highcharts.chart("container", data);
    }
  });
</script>

Когда я начинаю использовать значения() в моем наборе запросов для аннотирования и группировки столбцов для агрегации и добавления их к переменной данных, это дает мне эту ошибку TypeError: values ​​() не принимает аргументов (1 дано).

Это мои новые представления.py используя values ​​() для моего набора запросов:

class chart_data(object):   # Grabs the Data
def sum_savings():
    data = {'division': [], 'total_actual_savings': [],
             'actual_fte': []}


    cost = BsoCet.objects.values('division').
        annotate(savings=Sum('total_actual_savings'))

    for i in cost:
        data['division'].append(i.values('division'))
        data['total_actual_savings'].
            append(i.values('total_actual_savings'))



    return data

**** def plot остается неизменным ...

*** это ошибка, которую я получаю: строка 21, вsum_savings data ['Division']. append (i.values ​​('Division')) TypeError: values ​​() не принимает аргументов (1 дано)

Я довольно новичок в Django, поэтому, пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 20 февраля 2019

Нашли решение через интернет.Изменил мои views.py на это:

def Chart(request):
  dataset = BsoCet.objects.values('division').
  annotate(savings=Sum('total_actual_savings')).order_by('savings')

  categories = list()
  savings_data = list()

  for entry in dataset:
    categories.append(entry['division'])
    savings_data.append(entry['savings'])

  savings =  {
    'name': 'savings',
    'data': savings_data,
    'color': 'green'
  }

  chart = {
    'chart': {'type': 'column'},
    'title': {'text': 'Division Savings'},
    'xAxis': {'categories': categories},
    'series': [savings]
  }

  dump = json.dumps(chart)

  return render(request, 'BSO/BSO_dashboard.html', {'chart':dump})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...