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

Odoo中正确继承邮件模板的方法?已配置但未生效

Odoo邮件模板继承不生效问题排查与修复

我尝试在Odoo中继承并修改现有邮件模板,参考教程修改了模板的名称和主题,但重启服务器并更新模块后配置不生效。以下是我的配置代码:

Python模块配置

...
'depends': ['base','auth_signup'],
'data': [
    'data/mail_template.xml',
],
...

XML邮件模板配置

<?xml version='1.0' encoding='utf-8'?>
<odoo>
    <data noupdate="1">
        <function name="write" model="ir.model.data">
            <function name="search" model="ir.model.data">
                <value eval="[('name', '=', 'mail_template_user_signup_account_created'), ('module', '=', 'auth_signup')]" />
            </function>
            <value eval="{'noupdate': False}" />
        </function>
        

        <!-- Email template for new users that used a signup token -->
        <record id="auth_signup.mail_template_user_signup_account_created" model="mail.template">
            <field name="name">Settings: New User Invite updated</field>
            <field name="subject">Hello {{ object.name }}: Welcome to {{ object.company_id.name }}!</field>
        </record>

        <function name="write" model="ir.model.data">
            <function name="search" model="ir.model.data">
                <value eval="[('name', '=', 'mail_template_user_signup_account_created'), ('module', '=', 'auth_signup')]" />
            </function>
            <value eval="{'noupdate': True}" />
        </function>
    </data>
</odoo>

问题原因及修复步骤

1. 核心问题:外层noupdate属性冲突

你的XML文件外层设置了 <data noupdate="1">,这意味着整个数据块会被标记为「不重复更新」,即使你内部尝试修改原模板的noupdate属性,整个修改逻辑也不会被执行。

2. 正确修复方案

方案一:调整外层noupdate属性

将XML文件外层<data>标签的noupdate="1"改为noupdate="0",确保模块更新时执行修改逻辑:

<?xml version='1.0' encoding='utf-8'?>
<odoo>
    <data noupdate="0">
        <!-- 解除原模板的noupdate锁定 -->
        <function name="write" model="ir.model.data">
            <function name="search" model="ir.model.data">
                <value eval="[('name', '=', 'mail_template_user_signup_account_created'), ('module', '=', 'auth_signup')]" />
            </function>
            <value eval="{'noupdate': False}" />
        </function>

        <!-- 修改邮件模板内容 -->
        <record id="auth_signup.mail_template_user_signup_account_created" model="mail.template">
            <field name="name">Settings: New User Invite updated</field>
            <field name="subject">Hello {{ object.name }}: Welcome to {{ object.company_id.name }}!</field>
        </record>

        <!-- 可选:恢复原模板的noupdate锁定 -->
        <function name="write" model="ir.model.data">
            <function name="search" model="ir.model.data">
                <value eval="[('name', '=', 'mail_template_user_signup_account_created'), ('module', '=', 'auth_signup')]" />
            </function>
            <value eval="{'noupdate': True}" />
        </function>
    </data>
</odoo>

方案二:使用Odoo标准继承方式(更推荐)

用<inherit_id>实现模板继承,这是Odoo官方推荐的规范写法,逻辑更清晰:

<?xml version='1.0' encoding='utf-8'?>
<odoo>
    <data noupdate="0">
        <record id="mail_template_user_signup_account_created_custom" model="mail.template">
            <field name="inherit_id" ref="auth_signup.mail_template_user_signup_account_created"/>
            <field name="name">Settings: New User Invite updated</field>
            <field name="subject">Hello {{ object.name }}: Welcome to {{ object.company_id.name }}!</field>
        </record>
    </data>
</odoo>

3. 验证修改

  • 重启Odoo服务器
  • 进入模块列表,找到你的自定义模块点击更新
  • 前往「设置 > 技术 > 邮件 > 邮件模板」,找到对应模板确认修改是否生效

内容的提问来源于stack exchange,提问作者Jhordy Said Barrera

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 17:40:58