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继承重写方法(仅自定义下载文件名,不保存附件)
如果你不想把报表存为订单附件,只是想修改下载时的文件名,可以通过继承报表的抽象模型来实现:
- 在你的模块中创建一个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
- 记得在你的模块的
__manifest__.py中添加这个Python文件的引用,确保Odoo能加载到它。
关键说明:
_inherit的值要和你报表动作里name属性的内容完全一致(比如module.custom_sale_report)。_get_report_filename方法会返回你想要的文件名,这里self对应的就是当前的sale.order记录,直接用self.name获取订单编号即可。
内容的提问来源于stack exchange,提问作者Alpha Geek
相关产品推荐
相关产品推荐

