양식의 헤더와 데이터의 키를 비교하는 기능을 사용하려고합니다. 키가 유사하지 않은 경우이 함수는 빈 필드를 추가합니다.
내 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>
모든 헤더가 데이터와 정렬되므로 결과는 완벽합니다. 그리고 그림과 같은 일부 데이터가 누락 된 경우이 열에 빈 소스가 있습니다.
내 루프를 통해 하나의 양식 만 인쇄했습니다 (형식화 된 dict에서 마지막으로 저장된 양식). 그리고 모든 양식을 인쇄하고 싶습니다. 그러나 views.py에서는 불가능 해 보입니다.
템플릿으로 어떻게 관리합니까?
귀하의 답변에 감사드립니다!
BR, Karro.
해결책을 찾았습니다.
사전 목록을 만들었습니다.
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>
모든 것이 잘 작동했습니다!
나는 내 모든 결과를 얻었다!
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다