Как получить новый идентификатор записи в odoo? - PullRequest
0 голосов
/ 04 марта 2019

Я создал новую запись и хотел получить 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)

Это моя функция отправки электронной почты.Я хочу отправить письмо автоматически после создания записи.Итак, я хочу получить недавно созданный идентификатор записи и передать этот идентификатор этой функции.

@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

Эта функция вызывается из моего шаблона электронной почты.Он должен принимать идентификатор вновь созданной записи, но он не получает эти идентификаторы, поэтому шаблон рендеринга не выполнен.

1 Ответ

0 голосов
/ 05 марта 2019

Он должен принимать идентификатор вновь созданной записи

Но вы не передали код, где он обрабатывает вновь созданный набор записей для этой модели.

КомуПолучить идентификатор записи вновь созданных записей, вы можете использовать функцию создания, как и другие, упомянутые в комментарии.Функция создания определения модели всегда запускается при создании новой модели.

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