How to obtain the id of a self (onchange) odoo

Use the self._origin.id

If you have this code onchange:

@api.onchange('a_field') 
def _onchange_cor(self):
if self.a_field:
self.env.cr.execute('SELECT name from a_table where field_id=%s' , (self.id,))

but self.id returns <openerp.models.NewId object at 0x7f904b586e10>

How to get the id of self (the current record)?


In onchange, odoo creates a new object and replaces self with it. The origin object, what you are looking for can be found under self._origin.id