Odoo电子邮件模板呈现错误

时间:2018-07-13 16:36:51

标签: python odoo odoo-10

我正在从模块@override create方法发送电子邮件,这是我的方法

@api.model
def create(self, values):
    res = super(licenses, self).create(values)
    template = self.env.ref('licenses.license_create_email_template', False)
    # Send out the e-mail template to the user
    self.env['mail.template'].browse(template.id).send_mail(res, force_send=True)
    return res

这是我的模板

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data noupdate="1">
        <record id="license_create_email_template" model="mail.template">
            <field name="name">License Create</field>
            <field name="email_from">${user.email|safe}</field>
            <field name="subject">License Create</field>
            <field name="email_to">${object.x_partner_id.email}</field>
            <field name="model_id" ref="licenses.model_licenses_licenses"/>
            <field name="auto_delete" eval="True"/>
            <field name="lang">${object.x_partner_id.lang}</field>
            <field name="body_html"><![CDATA[
             The License of ${object.x_partner_id.name} has been created.
        ]]></field>
       </record>
    </data>
</odoo>

当我预览模板以正确设置它呈现时,但是当我从代码中呈现电子邮件模板时,它给出了呈现错误,这里是呈现错误图片 (Picture)Email template render problem error

1 个答案:

答案 0 :(得分:1)

send_mail模型的mail.template方法的参数之一是res_id,它是一个整数,请看一下其definition。并且,如果您使用的是.v10新api,则根据documentation create方法返回的记录集不是整数,因此您可以通过该方式从该记录集中获取id {{ 1}},并将其作为res.id的参数传递。

我希望这个答案对您有帮助。