質問: ### 実現したいこと Python Djangoでアプリケーションを作成しています。 Viewで作成したデータをDjangoテンプレートで表示しようとしております。 具体的には、従業員の勤務時間を集計し表示するというものになります。 ### 発生している問題 データベースより勤務データを取得し、集計の上テンプレートに渡すという一連の流れはできています。 しかし、集計したものを思い通りに表示することができていません。 ### 該当のソースコード Viewで作成したデータは以下のようなリストになります。 ``` emp_data [ {'emp_code': 'A0001', 'emp_name': '山田太郎', 'time_h': {'2017/10': 45.0}} {'emp_code': 'A0002', 'emp_name': '川上次郎', 'time_h': {'2017/10': 40.0, '2017/11': 93.5, '2017/12': 56.0}} {'emp_code': 'A0003', 'emp_name': '大井三郎', 'time_h': {'2017/09': 20.0, '2017/11': 80.0, '2017/12': 50.0}} ... ] ``` 勤務時間(time_h)は月ごとに集計したもので、従業員によって月ごとにあったりなかったりします。 以上のデータを、以下のように表示するためのDjangoテンプレートを作成しています。 | 従業員コード | 従業員名 | 2017/08 | 2017/09 | 2017/10 | 2017/11 | 2017/12 | | --- | --- | --- | --- | --- | --- | --- | | A0001 | 山田太郎 | | | 45.0 | | | | A0002 | 川上次郎 | | | 40.0 | 93.5 | 56.0 | | A0003 | 大井三郎 | | 20.0 | | 80.0 | 50.0 | 以下が現在作成中のDjangoテンプレートです。 ``` {% load static %} 勤務データ 勤務データ 従業員コード 従業員名 勤務時間 {% for ym in ym_arr %} {{ ym }} {% endfor %} {% for ed in emp_data %} {{ ed.emp_code }} {{ ed.emp_name }} ******************************************************************** ここをどう書けばいいのかがわかりません。 ******************************************************************** {% endfor %} ```
回答: Pythonコーディング経験はほぼゼロですが、以下のような雰囲気ではどうでしょうか?(あくまで雰囲気(?)です・・文法正しいかどうかは分かりません) ``` ... {% for ed in emp_data %} {{ ed.emp_code }} {{ ed.emp_name }} {% for ym in ym_arr %} {% if ym in ed.time_h %} {{ ed.time_h[ym] }} {% else %} {% endfor %} {% endfor %} ... ```