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óndepends.
- 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
nameporinherital 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
nameeinherit.
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
procesary recibe dos parámetros, el nuevo método también debe llamarseprocesary 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)dondeNombreClasees 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.