2016-09-26 48 views
2

查看:Django的數據,谷歌圖表

def home(request, 
    template = 'home.html'): 
    if request.user.is_authenticated(): 
     data = [['jan'],[12],[-12]] 

    context = { 
     'data' : data, 
    } 
    return render(
     request, template, context) 

模板:

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> 
<script type="text/javascript"> 
google.charts.load('current', {packages: ['corechart', 'bar']}); 
google.charts.setOnLoadCallback(drawVisualization); 

function drawVisualization() { 


    var data = new google.visualization.DataTable(); 
    data.addColumn('string', 'Month'); 
    data.addColumn('number'); 
    data.addColumn('number'); 

    data.addRows({{ data|safe }}); 

    // Create and draw the visualization. 
    new google.visualization.ColumnChart(document.getElementById('visualization')). 
     draw(data, 
      {title: "blabla", 
      width:600, height:400, 
      bar: { groupWidth: '90%' }, 
      isStacked:"true", 
      legend:"none" } 
    ); 

} 
</script> 

我試圖讓數組值的圖表行,但不明白爲什麼這是行不通的。沒有圖是繪製的,但其他所有的工作。

總體目標是將模型字段存儲在一個數組中,然後用它來繪製圖表,如果我不能這樣做,那麼我將無法繼續。

當我打電話{{數據}}在模板,它返回:

[[0],[12],[-12]]

這是該錯誤的格式?我怎樣才能改變這個谷歌圖表接受它作爲行值?

任何幫助或方向將不勝感激,

在此先感謝

+0

請您詳細說明一下嗎?我試圖產生一個負面/正面的柱形圖,所以我需要正面和負面的價值。它在我直接在腳本中設置行的值時起作用,但如果我在視圖中執行它,並返回行的值(如上所述),則不會繪製任何內容。 –

回答

2

根據代碼中的數據表定義,有三列...

var data = new google.visualization.DataTable(); 
data.addColumn('string', 'Month'); 
data.addColumn('number'); 
data.addColumn('number'); 

但是從閱讀這個問題,聽起來像你只需要兩個...

var data = new google.visualization.DataTable(); 
data.addColumn('string', 'Month'); 
data.addColumn('number'); 

並增加值的單排,格式應該是...

['Month', 0] 

添加所有行,並使用addRows,格式應該是...

[ 
    ['Month', 0], 
    ['Month', 12], 
    ['Month', -12] 
] 

在您的視圖環境,請將'data' : data更改爲'data': json.dumps(data)

在javascript或視圖中使用json至關重要。

+0

非常感謝WhiteHat,我仍然需要3列,因爲負面和正面可以在同一個月。我試過你的格式,它的工作,非常感謝,現在我終於可以連接到數據庫。 –