Djangoで条件付き書式を設定する正しい方法は何ですか?Djangoで条件付き書式を設定する
私は日付フィールドを含むモデルを持っていますが、レコードのリストを表示したいのですが、その日付フィールドの値に応じて行を色分けしたいと思います。たとえば、今日の日付と一致するレコードは黄色になり、今日のレコードは緑色になり、その後は赤色になります。
Djangoのどこかで、現在の日付とレコードの日付を比較する必要があります。
私は比較が行われることができる三つの異なる場所で見ることができます:
- は「過去」、「現在」、「未来」のいずれかを返すこと、例えば、状態()、私のモデルにメソッドを追加します。テンプレート内の行を使用して行を色付けします。
- クエリーセットをテンプレートに返す代わりに、リストを前処理して各レコードを比較し、テンプレートに使用する '過去'、 '現在'、および '未来'の値を含む新しいdictを作成します。
- 比較を行う新しいテンプレートタグを作成します。
どの方法が正しいジャンゴのやり方ですか?条件付きフォーマッティングは非常に頻繁に起こるもので、テンプレートで任意の比較を行うことはできないので、他の解決策が必要です。
たとえば、学生の成績のリストを表示する場合など、より簡単な書式設定のルールにも同じことが適用され、80%が緑色より高く、30%が赤色より低くなるようにしたいとします。
しかし、複数のモデルでは、モデル手法を他のすべてのモデルにコピーしなければならないため、このルートを少し濡らす必要があります。 – googletorp
モデルの継承とユーティリティ関数のどちらでも、コードの重複を減らすことができます。 –
@googletorp:質問には複数のモデルは言及されていませんでした。クラス名の割り当てに必要なコードの量は些細なものであり、確かに別々の、再利用された関数、またはスーパークラスの一部である可能性があります。 –