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

Odoo 15多公司环境下子模板无法访问主模板变量'o'的原因

Odoo 15多公司环境下发票PDF模板修改出现KeyError: 'o'的原因及解决方法
  • 问题根源:
    你修改的account.document_tax_totals子模板本身的标准上下文变量是document,而非o。主公司打印时能正常使用o,是因为调用该子模板的父模板(如account.report_invoice)刚好将o变量传递到了子模板的上下文中;但在多公司环境下,其他公司的报表调用逻辑或上下文传递规则存在差异,导致子模板上下文里没有o变量,从而抛出KeyError。

  • 修复方法:
    将模板代码中的o替换为子模板的标准变量document即可,修改后的代码如下:

    <template id="document_tax_totals" inherit_id="account.document_tax_totals">
        <xpath expr="//t[@t-call='account.tax_groups_totals']" position="replace">
            <tr>
                <td><strong>Taxes</strong></td>
                <td class="text-right">
                    <span t-esc="document.amount_tax" t-options='{"widget": "monetary", "display_currency": document.currency_id}'/>
                </td>
            </tr>
        </xpath>
    </template>
    
  • 补充说明:
    Odoo的子模板在被调用时,变量传递依赖于父模板的t-set或上下文继承,直接使用非标准变量会导致兼容性问题,尤其是多公司这种存在不同配置或调用路径的场景,必须遵循子模板本身的变量规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 15:15:42