質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

907閲覧

Djangoテンプレートで、集計したデータを表示したい。

310jun1

総合スコア12

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/10/16 07:59

実現したいこと

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テンプレートです。

Python

1{% load static %} 2 3<html> 4 <head> 5 <title>勤務データ</title> 6 </head> 7 <body> 8 <div> 9 <h1>勤務データ</h1> 10 </div> 11 12 <table border="1"> 13 <tr> 14 <th rowspan="2">従業員コード</th> 15 <th rowspan="2">従業員名</th> 16 <th colspan="{{ym_arr|length}}">勤務時間</th> 17 </tr> 18 <tr> 19 {% for ym in ym_arr %} 20 <th>{{ ym }}</th> 21 {% endfor %} 22 </tr> 23 {% for ed in emp_data %} 24 <tr> 25 <td>{{ ed.emp_code }}</td> 26 <td>{{ ed.emp_name }}</td> 27 28******************************************************************** 29ここをどう書けばいいのかがわかりません。 30******************************************************************** 31 32 </tr> 33 {% endfor %} 34 </table> 35 </body> 36</html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Pythonコーディング経験はほぼゼロですが、以下のような雰囲気ではどうでしょうか?(あくまで雰囲気(?)です・・文法正しいかどうかは分かりません)

python

1... 2{% for ed in emp_data %} 3<tr> 4 <td>{{ ed.emp_code }}</td> 5 <td>{{ ed.emp_name }}</td> 6 7 {% for ym in ym_arr %} 8 {% if ym in ed.time_h %} 9 <td>{{ ed.time_h[ym] }}</td> 10 {% else %} 11 <td></td> 12 {% endfor %} 13 14</tr> 15{% endfor %} 16...

投稿2018/10/19 10:52

matsuand

総合スコア186

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問