PROGRAMACIÓN ODOO: Cómo funciona la 🔴 HERENCIA de modelos y métodos PYTHON en ODOO? | Heredar models

PROGRAMACIÓN ODOO: Cómo funciona la 🔴 HERENCIA de modelos y métodos PYTHON en ODOO? | Heredar models

¿Cómo hacer herencias en Odoo?

Introducción a las herencias en Odoo

  • El presentador introduce el tema de las herencias en Odoo, enfatizando la importancia de no modificar el código estándar.
  • Se menciona que cualquier modificación debe hacerse mediante herencia y no directamente en el código estándar para evitar problemas futuros.

Principios básicos de la herencia

  • Las herencias permiten cambiar, agregar o eliminar funcionalidades existentes sin alterar el código original.
  • Estas modificaciones pueden aplicarse a modelos, vistas o lógica de negocio según sea necesario.

Configuración del archivo manifest

  • En el archivo manifest, es crucial especificar los módulos que contienen los modelos heredados en la sección depends.
  • Un ejemplo se presenta donde se indica cómo declarar dependencias a otras aplicaciones como "account" y "budget".

Proceso de creación de una herencia

  • Para crear una herencia, se sustituye la palabra reservada name por inherit al definir un modelo existente.
  • Es fundamental que el modelo al que se desea hacer referencia ya exista; si no, se generará un error.

Agregar y anular campos y métodos

  • Con la herencia, es posible agregar nuevos campos a un modelo existente o anular campos ya definidos.
  • También se pueden añadir restricciones o funcionalidades adicionales a un modelo heredado.

Ejemplos prácticos de funcionalidad adicional

  • Se puede implementar lógica adicional al ejecutar procesos específicos dentro del modelo heredado.
  • La adición de métodos nuevos permite extender las capacidades del modelo más allá de lo que ofrece el estándar.

Representación en código

  • Se explica cómo representar estas modificaciones en código, destacando la diferencia entre usar name e inherit.

Sobreescritura de Métodos en Herencia

Conceptos Clave sobre Sobreescritura de Métodos

  • Se puede sobrescribir completamente un método heredado al crear un nuevo método con el mismo nombre y la misma cantidad de parámetros que el original.
  • Si el método original se llama procesar y recibe dos parámetros, el nuevo método también debe llamarse procesar y recibir exactamente dos parámetros.
  • Al modificar un método, si se cambian los parámetros, no se considerará una sobrescritura sino un nuevo método. Para invocar la funcionalidad del método original, se utiliza la palabra reservada super.

Implementación Práctica de la Sobreescritura

  • La sintaxis para llamar al método original incluye: super(NombreClase, self).nombre_metodo(parametros) donde NombreClase es el nombre de la clase actual.
  • En el ejemplo dado, se crea un nuevo método llamado método_original, que recibe solo un parámetro (self). Aquí se puede agregar lógica adicional antes o después de ejecutar el método original.

Modificaciones a la Funcionalidad Original

  • Es posible anular completamente lo que hace el método original omitiendo su ejecución o modificando los parámetros antes de invocarlo.
  • También se puede manipular la respuesta del método original antes de devolverla, permitiendo así cambiar su comportamiento sin perder su funcionalidad básica.

Consideraciones Importantes al Sobreescribir Métodos

  • Al crear un nuevo método que sobrescribe uno existente, es crucial mantener la misma firma (nombre y número de parámetros).
  • Si el método original devuelve un valor, es importante que el nuevo también lo haga para evitar errores en otras partes del código que dependen del resultado.
Video description

En este video explico lo que necesitas saber para entender las herencias en Odoo y la manera de cómo realizarlas. Está orientado a la modificación de modelos y métodos python utilizando la herencia. Aprenderás qué se requiere modificar y tomar en consideración en el archivo __manifest__.py al momento de heredar un modelo desde código python, así como el uso de inherit y super. 🌐 Hosting que utilizo: linode.gvw92c.net/RyqgXv 🎤 El micrófono que utilizo: https://amzn.to/3NK26Qw ☕️ Apoya a este canal con un Café: https://ko-fi.com/josuheuh 00:00 Introducción herencias Odoo python 00:15 Puntos a tomar en cuenta antes de hacer una herencia en Odoo 01:43 Sección depends en __manifest__.py 03:15 Usar _inherit para heredar modelos en Odoo 05:04 ¿Qué podemos lograr con las herencias en Odoo? 07:04 Código python para herencias de modelos en Odoo 07:59 Heredar métodos python en modelos Odoo 09:41 Ejemplo heredar método con super(NombreClase,self).método_original() 11:52 Consideraciones al heredar y modificar un método