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

Odoo V10自定义PDF报表文件名修改方法咨询

实现Odoo V10自定义报表动态文件名的方法

在Odoo V10里给QWeb PDF报表设置sale_SO001.pdf这种动态文件名,有两种实用方案,你可以根据需求选择:

方案一:通过XML报表动作配置(同时保存报表为附件)

这种方法最简单,直接修改你现有的报表动作XML,添加attachment和attachment_use属性就能实现:

<report id="my_custom_report_action" string="Sale Report" model="sale.order" 
        report_type="qweb-pdf" name="module.custom_sale_report" file="module.custom_sale_report"
        attachment="('sale_%s.pdf' % object.name)" 
        attachment_use="True"/>

关键说明:

  • attachment里的Python格式字符串会自动获取当前sale.order记录的name字段(也就是你的订单编号,比如SO001),拼接成目标文件名。
  • attachment_use="True"会让Odoo同时把生成的PDF作为附件保存到对应的销售订单记录中,以后打开订单就能直接查看这份报表。

方案二:通过Python继承重写方法(仅自定义下载文件名,不保存附件)

如果你不想把报表存为订单附件,只是想修改下载时的文件名,可以通过继承报表的抽象模型来实现:

  1. 在你的模块中创建一个Python文件(比如report_sale_order.py),添加以下代码:
from odoo import models, api

class ReportSaleOrderCustom(models.AbstractModel):
    _inherit = 'report.module.custom_sale_report'  # 替换成你实际的报表引用路径

    @api.multi
    def _get_report_filename(self):
        self.ensure_one()
        return 'sale_%s.pdf' % self.name
  1. 记得在你的模块的__manifest__.py中添加这个Python文件的引用,确保Odoo能加载到它。

关键说明:

  • _inherit的值要和你报表动作里name属性的内容完全一致(比如module.custom_sale_report)。
  • _get_report_filename方法会返回你想要的文件名,这里self对应的就是当前的sale.order记录,直接用self.name获取订单编号即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:05:15