Campos Relacionados (Odoo v11)
Descripción
Muchas veces a la hora de programar en Odoo nos encontraremos con casos en lo que queremos trabajar con campos que se encuentran en otros modelos. Para poder hacerlo Odoo nos facilita la posibilidad de usar campos relacionados que lo que viene hacer de forma resumida es enlazar un campo del modelo X con otro campo del modelo Y. Para poder acceder a la información que contienen habrá que usar la siguiente secuencia
Estructura
Simplemente establece el argumento del nombre relacionado con su modelo.
rel_field = fields.Char(string='Name',related='partner_id.name')
- rel_field nombre que le ponemos al campo.
- string=' ' etiqueta que tendrá nuestro campo.
- related declaración de la relación.
fields.Char indicamos el tipo de campo que vamos a otorgarle (este debe coincidir con el que hereda).
El parámetro store nos permite almacenar el valor en la base de datos.
rel_field = fields.Char(string='Name',store=True,related='partner_id.name')
Ejemplo
Para explicar lo mencionado anteriormente vamos a relacionar un campo del modelo de Producto con un campo que se encuentra en el modelo de Facturas.
1.- Localizar el nombre del campo que queremos relacionar
Para este caso seleccionaremos el campo Tipo de Producto del cual debemos coger el nombre que le da Odoo a dicho campo para ello posicionamos nuestro cursor encima del nombre y aparecerá una pantalla de color negro con la información del campo.
Una vez hecho estoy nos dirigiremos a nuestro modelo donde nos crearemos una nueva clase que hereda de account.invoice.line y añadiremos nuestro campo relacionado.
A continuación crearemos la vista que va a contener el nuevo campo dentro de las líneas de factura.
Y para finalizar dado que estamos usando la vista de Producto y Factura habrá que añadirlas a nuestro manifest
Consejo
Con esta sentencia 'application': 'True',
conseguimos que nuestra aplicación esté en el listado principal de nuestro Odoo por lo que nos facilitará la búsqueda.
Resultado:
Vista sin modificar:
Vista modificada