我试图使用比较表单标题和数据中的键的函数。如果键不相似,则此函数会添加一个空字段。
我的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>
结果很完美,例如每个标题都与数据对齐。如果有一些数据丢失,如图片,则此列中有一个空的sace。
我只通过循环打印了一个表单(最后一个从格式化的dict中保存)。我想打印我的所有表格。但在views.py中似乎是不可能的。
我如何将其管理到模板中?
感谢您的回答!
BR,Karro。
答案 0 :(得分:0)
我找到了解决方案。
我创建了一个词典列表:
formattedList = []
然后,我改变了我的初始循环,以便在列表中设置每个字典:
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>
一切正常!
我得到了所有结果!