2011-07-18 8 views
0

私は3つの関連フィールドを持っていますが、3つすべてを表示するテーブルを構築するには良い方法を見つけようとしています。 私はEmployee、CertificateTypes、およびCertificatesを持ち、EmployeeとCertificateTypeをリンクする証明書を持っています。 CertificateTypesは基本的にEmployeeが受け取るトレーニングのタイプで、CertificatesはEmployeeがCertificateTypeで受け取ったトレーニングです。Django - 3つのモデルにまたがるテーブルを表示する

例:(並行した例):学生は、理学士、従業員=学生、卒業証書=理学士号=学士卒業証書=卒業証書を受けることができます。

すべての従業員を行として、CertificateTypesを列として、証明書の有効期限をセルの値として表示するようにします。

私はリスト/ dictを私のビューに作ることができました。あるいは、テンプレートで再構築してみることもできました(私は再グループテンプレートタグを見ていました)。これを行うには最高の/最も簡単な方法は何ですか?

答えて

0

この問題を解決するには、表示ロジックからプレゼンテーションを分離してください。 2つ以上の関連モデルをテンプレートロジックと組み合わせるための標準的な手段は実際にはありません。問題は多かれ少なかれ、Djangoがサポートしない操作である外部結合です(this question参照)。

私自身の質問に答えるために、従業員、証明書のキー、値のペアの辞書としてカスタムコンテキストを構築することを選択しました。

certs_context = { 
    employee0: [ 
     [ 
      certificatetype0_certificate0, 
      certificatetype0_certificate1, 
     ], 
     [ 
      certificatetype1_certificate0, 
     ], 
    ], 
} 

限り、各従業員の鍵の証明書のリストが同じ証明書の種類の順序を維持して、ネストされたループを使用してテンプレートのテーブルを構築することは簡単です:

コンテキスト形式を持っていました。

テンプレート/プレゼンテーションロジックをよりシンプルに保ちます。

関連する問題