DJWOMS1
@DJWOMS1
Веб-программист

Как правильно построить словарь python для google charts?

Нужно сформировать словарь под google charts. Но у него конструкция странная, и библиотека отвечает
Cannot read property '1' of undefined

coun = Country.objects.values('country')
link = Proxy.objects.filter(country__in=coun).order_by('country').values_list('country').annotate(Count('country'))
dicts =  ({'c':[{'v': x[0]}, {'v': x[1]}]} for x in link)
 return HttpResponse(dicts)

Так нужно обработать на клиенте
jQuery.get("/cantry/",
                 function(data) {
                     dd = data;
                     //console.log(dd);
                     var data = new google.visualization.DataTable({
                     'cols': [
                              {'label':'Страна', 'type':'string'},
                              {'label':'Число', 'type':'number'}
                          ],
                     'rows': [
                     // 			{'c':[{'v':'24.05.2014'},{'v':3}]}, //<--Но в словаре который приходит нет запятых js.
                     // 			{'c':[{'v':'25.05.2014'},{'v':1}]},
                     // 			{'c':[{'v':'25.05.2014'},{'v':1}]}
                     dd
                          ]
                     });
                     var options = {
                         title: '',
                         chartArea:{left:0,top:0,width:'100%',height:'75%'},
                         legend: {position: 'bottom', maxLines: '2'}
                     };
                     var chart = new google.visualization.PieChart(document.getElementById('piechart'));

                     chart.draw(data, options);
                     alert(dd);
                 }
             );
  • Вопрос задан
  • 474 просмотра
Пригласить эксперта
Ответы на вопрос 2
DJWOMS1
@DJWOMS1 Автор вопроса
Веб-программист
Ответ таков
var google_data = {
         "cols": [{
                       label: 'Страна', "type": "string"
           }, {
                       "type": "string"
            }],
            rows: []
                       };
                       for(var i=0;i<data.length;i++){
                           google_data.rows.push({c:[{v:data[i]}, {v:parseInt(data[i])}]});
                       }
Ответ написан
Комментировать
Вместо:
for x in link
Используйте это:
for x in link.items()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы