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

如何在Odoo的account.report_invoice_document报表中访问ir.config_parameter

解决Odoo发票报表中打印配置参数的问题

你之前的代码报错“未知ir”,原因是QWeb报表模板的上下文里没有直接提供ir这个变量,且你拼写错了模型名(正确应为ir.config_parameter,不是ir.config_paramter)。下面是两种可行的实现方式:

方法1:直接在QWeb模板中获取参数

无需修改Python代码,直接通过模板上下文的env对象调用配置参数模型获取值:

<!-- 先获取配置参数值并存储到变量 -->
<div t-set="my_html_config" t-value="env['ir.config_parameter'].sudo().get_param('mymodule.myhtmlfield', default='')" />

<!-- 有值时渲染HTML内容 -->
<div t-if="my_html_config">
    <span t-raw="my_html_config" />
</div>
  • env['ir.config_parameter']:通过报表上下文的env调用配置参数模型
  • sudo():避免权限不足问题(部分配置参数需管理员权限读取)
  • get_param():获取指定键的参数值,default设置空值防止无参数时报错
  • t-raw:针对HTML类型字段,确保格式正确渲染而非输出纯文本

方法2:通过报表Python类传递参数(更规范)

若需复用参数或做额外逻辑处理,可继承报表抽象类,将参数注入报表上下文:

1. 编写Python继承代码

在自定义模块中创建如下代码文件:

from odoo import models, api

class ReportInvoiceDocument(models.AbstractModel):
    _inherit = 'account.report_invoice_document'

    @api.model
    def _get_report_values(self, docids, data=None):
        # 获取父类原有报表数据
        report_values = super()._get_report_values(docids, data=data)
        # 读取配置参数
        my_html_config = self.env['ir.config_parameter'].sudo().get_param('mymodule.myhtmlfield', default='')
        # 将参数加入报表上下文
        report_values['my_html_config'] = my_html_config
        return report_values

2. 修改QWeb模板

直接使用上下文变量即可:

<div t-if="my_html_config">
    <span t-raw="my_html_config" />
</div>

内容的提问来源于stack exchange,提问作者unnamed-dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:20:41