2017-07-24 226 views
0

我試圖使用函數比較表單頭和數據的鍵。如果鍵不相似,則此功能會添加一個空字段。在模板中使用函數(Django/Python)

它完美罰款,我views.py:

#Entries define all the datas taken from the fobi forms. 

headers = json.loads(entries{0}.saved_data) 
headers = headers.items() 

for key, value in headers: 
    for data in entries: 
     data = json.loads(data.saved_data) 

     formatted[value] = data.get(key, '') 
     print(entries) 


formatted = formatted.items() 

然後我通過格式化成的背景和我的模板我所做的:

<tr> 

      {% for key, valeur in headers %} 
      <th> 
      {{ key }} 
      </th> 
      {% endfor %} 
      </tr> 


      </thead> 
      <tbody> 

       <tr> 

       {% for key, valor in headers %} 
       {% for cle, valeur in formatted %} 


       {%if cle == valor%} 

       <td> {{valeur}}</td> 

       {% endif %}          
       {% endfor %} 
       {% endfor %} 

       </tr>       
      </tbody> 

結果是完美的,如每標題與數據對齊。如果有一些數據缺失,如圖片,這個列中就有一個空白的區域。 enter image description here

我只通過我的循環打印了一個表單(最後從格式化字典中保存)。我想打印所有的表格。但在views.py中似乎是不可能的。

我如何管理它到模板中?

謝謝你的回答!

BR,Karro。

回答

0

我找到了解決方案。

我創建dictionnaries的列表:

formattedList = [] 

然後,我改變我最初的循環才能讓每一個dictionnary列表設置:

for entry in entries: 
    formatted = {} 
    for key, value in headers: 

     data = json.loads(entry.saved_data) 

     formatted[value] = data.get(key, '') 

    formatted = formatted.items() 
    **formattedList.append(formatted)** 

最後,我改變了這些行我的模板文件:

<tbody> 
       **{%for element in formattedList%}**     
       <tr> 

       {% for key, valor in headers %} 
       **{% for cle, valeur in element %}** 

       {%if cle == valor%} 

       <td> {{valeur}}</td> 

       {% endif %}         
       {% endfor %} 
       {% endfor %} 

       </tr>   
       {% endfor %}    
      </tbody> 

一切工作正常!

我收到了我的所有結果!

enter image description here