Día 8: Herencia de Modelos en Python (_inherit) — El Salto a la Personalización

Día 8: Herencia de Modelos en Python (_inherit) — El Salto a la Personalización

¡Bienvenido a la Semana 2 de nuestro Calendario de Adviento Odoo (V19)!

Durante la primera semana, aprendimos a construir un módulo desde cero, definiendo su estructura, modelos, vistas y seguridad. Sin embargo, en el desarrollo real de Odoo, la mayoría de las veces no creamos algo nuevo, sino que modificamos y ampliamos las funcionalidades existentes (como la ficha de Clientes, Productos o Pedidos).

Hoy, en el Día 8, cubrimos el concepto que te permite hacer esto de forma segura y mantenible: la Herencia de Modelos con Python.

¿Qué hemos añadido en el Día 8?

El cambio principal de esta jornada es la implementación de la Herencia en nuestro código Python. Hemos creado un nuevo fichero dentro de nuestro módulo para demostrar cómo se añade funcionalidad a un modelo base de Odoo, como podría ser res.partner (Clientes/Contactos).

Los componentes clave que hemos añadido son:

1. El Concepto de Herencia de Odoo

La herencia te permite crear una nueva clase Python que hereda y amplía la funcionalidad de una clase existente. Utilizamos la clave _inherit para decirle a Odoo a qué modelo queremos añadir nuestros nuevos campos y métodos. Es fundamental para no modificar nunca los archivos del núcleo.

2. Implementación de _inherit

En nuestro fichero Python, hemos definido una nueva clase de modelo. En lugar de usar _name = ‘nombre.nuevo’, utilizamos el nombre del modelo que queremos extender y definimos _inherit = ‘res.partner’. De esta manera, nuestra clase tiene acceso a todos los campos y métodos del modelo original.

3. Añadir Nuevos Campos al Modelo Base

Dentro de esta nueva clase heredada, podemos añadir todos los campos que necesitemos. Por ejemplo, si necesitamos un campo referencia_interna_cliente para el modelo res.partner, simplemente lo definimos aquí. Al actualizar el módulo, Odoo insertará este nuevo campo en la tabla original.

Esta es la forma canónica y segura de personalizar Odoo V19.


Explicación Detallada en Vídeo

En el siguiente vídeo, te explico paso a paso cómo funciona la herencia de modelos, la diferencia entre _name y _inherit, y la sintaxis correcta para añadir campos a un modelo ya existente.


Código Fuente en GitLab

Puedes consultar el código fuente completo de esta lección, con la nueva clase de herencia en Python, directamente en nuestro repositorio.

➡️ Ver el Código en GitLab: https://github.com/angelmoya/calendario-adviento-curso-tecnico-odoo-19/tree/78c99bee25ba7b3d059f14d5d8eb941dae8a44ea


Conecta Conmigo y Sigue Aprendiendo

¡La Herencia de Modelos es solo la mitad del camino! Mañana veremos cómo usar xpath para que este campo que acabamos de crear en Python sea visible en la Vista de Formulario de Odoo.

YouTube: ¡No olvides suscribirte al canal para no perderte ninguna lección! https://www.youtube.com/@AngelMoya-Odoo