Odoo 11:将数组传递给 qweb 模板

Odoo 11: Pass array to qweb template

我正在尝试将数组从我的控制器传递到 QWeb 模板,但无法实现遍历它...

--- 控制器 ---

return_projects = {}

for active_project in active_projects:
    hours = 0
    for analytic_line in active_project.line_ids:
        hours += analytic_line.unit_amount

    return_projects[active_project.id] = {
        "name": active_project.display_name,
        "hours": hours
    }

return http.request.render('mymodule_briefing.crm_page', {
    'projects': return_projects,
})

--- 模板 ---

<t t-foreach="projects" t-as="project">
<-- show project.name -->
<-- show project.hours-->
</t>

在循环中,project 是项目 id,因此您需要使用它从 projects

获取项目数据(名称和时间)

示例:

<t t-foreach="projects" t-as="project_id">
    <div>
        <t t-esc="projects[project_id]['name']"/>
        <t t-esc="projects[project_id]['hours']"/>
    </div>
</t>  

您可以使用项目记录呈现模板:

return odoo.http.request.render('mymodule_briefing.crm_page', {
    'projects': active_projects,
})  

并使用以下代码遍历记录并计算小时数:

<t t-foreach="projects" t-as="project">
    <div>
        <t t-esc="project.name"/>
        <t t-esc="sum(line.unit_amount for line in project.line_ids)"/>
    </div>
</t>