2017-04-24 85 views
1

我有3個字典數據['d1'],data ['d2']和data ['d3']。Django模板表

我要的是表看起來像這樣,從每個字典獲取鍵和展示他們像:

Team 1  | Team 2  | Team 3 
key 1 from d1 | key 1 from d2 | key 1 from d3 
key 2 from d1 | key 2 from d2 | key 2 from d3 
key 3 from d1 | key 3 from d2 | key 3 from d3 
key 4 from d1 | key 4 from d2 | key 4 from d3 

我有什麼tryed

<thead> 
    <tr> 
     <th>Team 1</th> 
     <th>Team 2</th> 
     <th>Team 3</th> 
    </tr> 
</thead> 
<tbody> 
    <tr> 
    {% for key, value in d1.items %} 
     <td>{{ key }}</td> 
    {% endfor %} 
    </tr> 
    <tr> 
    {% for key, value in d2.items %} 
     <td>{{ key }}</td> 
    {% endfor %} 
    </tr> 
    <tr> 
    {% for key, value in d3.items %} 
     <td>{{ key }}</td> 
    {% endfor %} 
    </tr> 
</tbody> 

<thead> 
    <tr> 
     <th>Team 1</th> 
     <th>Team 2</th> 
     <th>Team 3</th> 
    </tr> 
</thead> 
<tbody> 
    {% for key, value in d1.items %} 
    <tr> 
     <td>{{ key }}</td> 
    </tr> 
    {% endfor %} 
    {% for key, value in d2.items %} 
    <tr> 
     <td>{{ key }}</td> 
    </tr> 
    {% endfor %} 
    {% for key, value in d3.items %} 
    <tr> 
     <td>{{ key }}</td> 
    </tr> 
    {% endfor %} 
</tbody> 

但它顯示不同。我怎樣才能達到上述表格?

當前表顯示如下:

Stalone Sobont arda AAA 
Sardina Jhonny Lala Vali 
LilJon Scuipy SSS  Mazare 

views.py

stats = data['scoruri'].copy() 
    data['d1'] = {} 
    data['d2'] = {} 
    data['d3'] = {} 

for key, value in stats.copy().items(): 
    if not data['d1'] or sum(data['d1'].values()) <= sum(data['d2'].values()) and \ 
         sum(data['d1'].values()) <= sum(data['d3'].values()): 
     name, score = max(stats.items(), key=lambda p: p[1]) 
     data['d1'][name] = score 
     stats.pop(name, score) 
     data['total_1'] = sum(data['d1'].values()) 
    elif not data['d2'] or sum(data['d2'].values()) <= sum(data['d1'].values()) and \ 
          sum(data['d2'].values()) <= sum(data['d3'].values()): 
     name, score = max(stats.items(), key=lambda p: p[1]) 
     data['d2'][name] = score 
     stats.pop(name, score) 
     data['total_2'] = sum(data['d2'].values()) 
    elif not data['d3'] or sum(data['d3'].values()) <= sum(data['d1'].values()) and \ 
          sum(data['d3'].values()) <= sum(data['d2'].values()): 
     name, score = max(stats.items(), key=lambda p: p[1]) 
     data['d3'][name] = score 
     stats.pop(name, score) 
     data['total_3'] = sum(data['d3'].values()) 
+0

它是什麼當前顯示(當前表格佈局)? –

+0

你能展示你如何在視圖中填充d1,d2和d3嗎? –

+0

完成後,找你自己 –

回答

0

所以,這是你如何做到這一點的表:

from collections import OrderedDict 


d1 = {1: 'Alex', 2: 'Andrei'} 
d2 = {1: 'Cristi', 2: 'Ion'} 
d3 = {1: 'Sandu', 2: 'Marica'} 

d = dict() 

d1 = OrderedDict(sorted(d1.items())) 
d2 = OrderedDict(sorted(d2.items())) 
d3 = OrderedDict(sorted(d3.items())) 

d1 = list(d1.items()) 
d2 = list(d2.items()) 
d3 = list(d3.items()) 

d['team_1'] = d1 
d['team_2'] = d2 
d['team_3'] = d3 

d = OrderedDict(sorted(d.items())) 


{% for i in d.items %} 
    <tr> 
     <td>{{ i.1.0.1 }}</td> 
    </tr> 
{% endfor %} 
0

要在要打印的字典中所有的鍵,而要打印的所有鍵行中的字典

您可以將字典組合成列表(在視圖中),然後在模板中迭代此列表。

在視圖:

data_dicts = [d1,d2,d3] 

而且在模板:

<tr> 
{% for d in data_dicts %} 
    {% for key, value in d.items %} 
     <td> {{ key }} </td> 
    {% endfor %} 
{% endfor %} 
</tr> 

此外,this long answer也可能會有幫助。

+0

是的,我意識到這一點,但我怎麼能做到這一點? –

+0

你是否嘗試壓縮字跡? – Anupam

+0

uhm ..不,我沒有 –