2016-11-15 72 views
0

對於我的使用chartjs的投票項目。在圖表中會有多行與輪詢選項相同。例如 -Django - 將二維字典數據呈現給模板

你是程序員嗎?

  1. 沒有

然後圖表會產生2線YesNo投票記錄。

view中,我創建了一個二維dictionary來存儲輪詢選項。

但我面臨着將二維dictionary數據渲染爲模板的問題。在模板文件中我編碼爲chartjs。有一個選項可以像下面的代碼行設置數據 -

datasets: [{ 
      label: '# of Votes', 
      data: [12, 19, 3, 5, 2, 3], 
      backgroundColor: [ 
       'rgba(255, 99, 132, 0.2)', 
      ], 
      borderColor: [ 
       'rgba(255,99,132,1)', 
      ], 
      borderWidth: 1 
     }] 

上面的代碼生成一行,但我需要使它的動態多條線路。

這裏是我的二維dictionary數據集 -

{8: {1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0, 10: 0, 11: 0, 12: 0}, 7: {1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0, 10: 0, 11: 1, 12: 0}} 

我試圖創建下面的代碼數據集 -

{% for key, value in vote_records.items %} 
      {% list = [] %} 
      {% for single_key, single_value in value.items %} 
      {% list.append(single_value) %} 
      {% endfor %} 
      { 
        label: '# for Vote', 
        data: {{ list }}, 
        backgroundColor: [ 
        'rgba(255, 99, 132, 0.2)', 
        ], 
        borderColor: [ 
        'rgba(255,99,132,1)', 
        ], 
        borderWidth: 1 
      }, 
      {% endfor %} 

但是,這不是在模板的正確途徑。我怎樣才能做到這一點?謝謝。

回答

1

您無法在模板中進行列表操作。目前還不清楚你想做什麼,但看起來你只需要將每個內部字典的值傳遞給你的JS函數。

{% for key, value in vote_records.items %} 
     { 
       label: '# for Vote', 
       data: {{ value.values }}, 
       backgroundColor: [ 
       'rgba(255, 99, 132, 0.2)', 
       ], 
       borderColor: [ 
       'rgba(255,99,132,1)', 
       ], 
       borderWidth: 1 
     }, 
{% endfor %} 
+0

是的,這是我的主要問題。是否 - '{{value.values}}'生成一個列表?我對Django很新穎。 – user3384985

+0

這不是一個Django的問題,而是標準的Python。在shell中嘗試:'x = {1:0,2:0,3:1}; x.values()' –

+0

顯示dict_values([0,0,1])。我可以使用它來獲取列表[0,0,1]還是需要一些定製? – user3384985