1.继承并扩展 _render_template 方法

在你的模块中,创建或修改一个Python文件(例如 models/custom_report.py),并在其中继承和扩展 ir.actions.report 模型的 _render_template 方法:

from odoo import models
from datetime import datetime

class IrActionsReport(models.Model):
    _inherit = 'ir.actions.report'

    def _render_template(self, template, values=None):
        # 插入打印时间逻辑
        docids = values.get('doc_ids')
        if docids:
            records = self.env[self.model].browse(docids)
            for record in records:
                if hasattr(record, 'print_date'):
                    record.print_date = datetime.now()

        # 调用父类的方法以执行原有的渲染逻辑
        return super(IrActionsReport, self)._render_template(template, values)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
3. 添加时间戳字段

在你的模型中,添加一个新的字段 print_date

from odoo import models, fields

class DomesticExpense(models.Model):
    _name = 'domestic.expense'
    
    # 其他字段定义
    print_date = fields.Datetime(string='Print Date')
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.