如何在odoo中获取新记录ID?

时间:2019-03-04 18:19:24

标签: odoo odoo-12

我创建了一个新记录,我想获取该记录的ID。我有一种想要获取新创建记录的ID的方法。如果是真的,我想采取某种行动。

@api.multi
def task_send_mail(self):   
    template_email = self.env["mail.template"].search([('name','=','Example e-mail template')]).id
    self.env["mail.template"].browse(template_email).sudo().send_mail(self.id, force_send=True)

这是我的发送电子邮件功能。我想在创建记录后自动发送电子邮件。因此,我想获取最近创建的记录ID,并将该ID传递给此函数。

@api.multi
def get_full_url(self):
    self.ensure_one()
    base_url = self.env["ir.config_parameter"].get_param("web.base.url")
    url_params = {
        'id': self.id,
        'action': self.env.ref('bhuwan_module.tender_records_form').id,
        'model': 'tender.manage',
        'view_type': 'form',
        'menu_id': self.env.ref('bhuwan_module.tender_records').id,
    }
    params = '/web#%s' % url_encode(url_params)
    return base_url + params

此功能从我的电子邮件模板中调用。它应该使用新创建的记录的ID,但是没有获得这些ID,因此呈现模板失败。

1 个答案:

答案 0 :(得分:0)

  

它应该使用新创建的记录的ID

但是您没有在处理该模型的新记录集的地方共享代码。

要获取新创建的记录的记录ID,可以使用注释中提到的其他创建函数。每当创建新模型时,都会触发“模型”定义的“创建”功能。

@api.model
def create(self,vals):
  record = super(ClassName, self).create(vals)
  record.task_send_mail ##record is the newly created record
  return record