You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo14如何向QWeb传值并将生成的PDF写入二进制字段

Odoo14向QWeb报告传参实现方案

核心逻辑

Odoo的_render_qweb_pdf方法支持传入第二个data类型字典参数,你只需要把待传递的变量存入这个字典,即可在QWeb模板中直接调用对应变量。

修改后代码

def button_plan(self):
    super(MrpProduction, self).button_plan()
    for report in self.bom_id.reports:
        report_name = "action_report_template"
        template = report
        # 构造传递给QWeb的参数字典
        render_data = {
            # 键名即为QWeb中可直接调用的变量名,不要和系统内置变量重名即可
            "custom_template": template
        }
        # 调用渲染方法时传入参数
        pdf = self.env.ref('my_module.action_report_template')._render_qweb_pdf(self.ids, data=render_data)
        report.operation_id.worksheet_type = 'pdf'
        report.operation_id.worksheet = base64.b64encode(pdf[0])

QWeb模板调用示例

在my_module.action_report_template对应的XML模板中,你可以直接使用上面定义的变量:

<div>
    <!-- 示例:输出传递的template记录的name字段 -->
    <p>关联模板名称:<span t-esc="custom_template.name"/></p>
    <!-- 其他属性可按照记录集调用规则直接取值 -->
</div>

注意事项

  • 变量键名不要和QWeb默认内置变量(如docs、doc_ids、user、time等)重名,避免覆盖默认参数导致报告异常
  • 如果传递的是记录集,需要确保触发报告的用户有对应模型的读权限

内容的提问来源于stack exchange,提问作者Neural

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 00:27:03