前提・実現したいこと
####Djangoで機器の管理台帳を作れないかと模索しています。
親テーブルに機器名称と機器No(連番)、子テーブルに親テーブルの機器Noと故障内容といった2つのテーブルを作りました。
子テーブルは機器が故障するたびにレコードを入力します。
テンプレートで、親テーブルのレコードと子テーブルの最新のレコードを同時に表示したいです。
(左側から、機器No,機器名称,故障内容とし、上から機器No1,2,3...のように表示したい)
子テーブルの最新のレコードをソートし、機器No順にテンプレート上で表示させることはできたのですが、子テーブルのレコードで機器Noが1,3,4と機器No2がない場合に、No2の行を空白で表示させたいです。
発生している問題・エラーメッセージ
#####【現状】
機器No 機器名 故障内容
1 A 破損
2 B 接点不良(No3のレコード)
3 C 経年劣化(No4のレコード)
4 D
#####【理想】
機器No 機器名 故障内容
1 A 破損
2 B
3 C 接点不良(No3のレコード)
4 D 経年劣化(No4のレコード)
該当のソースコード
views
1class List(ListView) 2 model = Machine 3 context_objext_name = 'machine_list' 4 def get_context_data(self,*args, **kwargs,): 5 context['malfunctions']=Malfunction.objects.order_by('mf_name__machine_number','-created_at').distinct('mf_name__machine_number') 6 return context
html
1<table align="left" class="machine"> 2 <tr><th>機器No.</th><th>機器名称</th></tr> 3 {% for machine in object_list %} 4 <tr><td>{{ machine.machine_number }}</td><td>{{ machine.machine_name }}</td></tr> 5 {% endfor %} 6<table class='malfunction'> 7 <tr><th>故障内容</th></tr> 8 {% for malfunction in malfunctions %} 9 <tr><td>{{ malfunction.mf_contents }}</td></tr> 10 {% endfor %}
試したこと
template上でforloop.counterと機器Noを照合し、trueならそのまま上記のように表示、falseなら空白と表示としましたが、故障内容がない機器が増えるにつれforloop.counterとの差が大きくなっていくことに気づき、またtemplate上で表記することで複雑になり、views.pyで何とかできないか調べ考えましたが、未だ結論に至っておりません。
本来はどのような形で(templateで行うのか、viewsで行うのか、またそれ以外か)プログラムするのが正なのかご教示いただきたいと思います。
プログラム自体VBA以外したことのない初心者ですので、上記説明に不備や本来の記述と異なる記載となっているかもしれませんが、アドバイスいただければ幸いです。よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/07 07:34 編集