Django - 显示一个跨越3个模型的表

时间:2011-07-18 23:55:32

标签: django

我有3个相关字段,我正在尝试找出一个显示全部三个表的好方法。 我有Employees,CertificateTypes和Certificates,证书链接Employee和CertificateType。 CertificateTypes基本上是员工可以接收的培训类型,证书是员工在CertificateType中收到的培训。

例如:(一个平行的例子):学生可以获得理学学士学位,员工=学生,证书类型=理学士和证书=文凭。

我希望我的表将所有Employees显示为行,CertificateTypes显示为列,将Certificate expiry date显示为单元格值。

我可以在我的视图中构建一个列表/字典,或者我可以尝试在模板中构建它(我正在查看重新组合模板标记)。什么是最好/最简单的方法?

1 个答案:

答案 0 :(得分:0)

要解决此问题,请坚持从视图逻辑中分离演示文稿。实际上没有任何组合的标准手段。 2个带模板逻辑的相关模型。问题或多或少是一个外连接,这是Django选择不支持的操作(参见this question)。

为了回答我自己的问题,我选择将自定义上下文构建为员工,证书密钥,值对的字典。

Context的格式为:

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

只要每个员工密钥的证书列表保持相同的证书类型顺序,就可以使用嵌套循环在模板中构建表格。

保持模板/表示逻辑(更多)简单。