Cambiando los nombres de los objetos en Odoo

Cada objeto en Odoo por lo general tiene un campo denominado name, el cual puede ser modificado y persistido debido a que por lo general tiene esta definición:

name = fields.Char('Nombre')

Este campo tambien puede ser buscado. Ahora, como hacemos para modificar el nombre mostrado? Mostrar un nombre como "[DEFAULT_CODE] PROD_NAME" como sucede con los productos? Para eso se debe modificar los contenidos del campo display_name. Este campo es un campo computado en Odoo, el cual es definido por una función denominada name_get, la cual tiene el decorador @api.multi (o sea que va a loopear en un recordset) y devuelve una lista donde cada elemento es una tupla con la forma (id, nuevo_nombre). Por ejemplo

@api.multi
def name_get(self):
    result = []
    for rec in self:
        result.append((rec.id, rec.ref or 'N/A' + ' - ' + rec.name))
    return result

Espero que les sea de utilidad,


Moldeo Interactive en Odoo Experience 2019
Presentando GeoEcon: Big Data en Odoo