¡Entramos en la recta final de la lógica de negocio! Hemos aprendido a trabajar con registros permanentes, pero Odoo también necesita un mecanismo para gestionar interacciones rápidas y temporales.
Aquí es donde entran en juego los Asistentes (Wizards), que son formularios flotantes diseñados para recopilar información antes de ejecutar una acción en el backend. La clave de su existencia es el modelo que los soporta: models.TransientModel.
¿Qué hemos cubierto en el Día 18?
Hemos creado un ejemplo completo de un Asistente: un modelo temporal en Python, su vista Formulario en XML y un botón que lo invoca.
Los componentes clave que hemos cubierto son:
1. El Modelo Transitorio (models.TransientModel)
Esta clase hereda de models.Model pero añade una funcionalidad vital: auto-limpieza. Los registros creados con TransientModel no están destinados a ser permanentes y son eliminados automáticamente por el sistema cada cierto tiempo (generalmente, unas horas).
- Uso: Perfecto para formularios de entrada de datos temporales, asistentes de importación o diálogos de confirmación.
2. La Invocación del Asistente
Para abrir el Wizard, necesitamos una Acción de Ventana especial en XML (ir.actions.act_window):
- target=»new»: Esta clave es fundamental. Le indica a Odoo que abra la vista en una ventana modal (pop-up) y no en la ventana principal.
3. El Método de Ejecución Final
El Asistente típicamente tiene un botón que llama a un método Python. Este método:
- Lee los valores ingresados en el formulario temporal (self.campo_x).
- Ejecuta la lógica de negocio en el modelo principal (el registro desde donde se invocó el asistente).
- Devuelve una acción: El método final debe devolver un diccionario que le diga a Odoo cómo continuar (ej. cerrar el pop-up y recargar la vista). El retorno más común es return {‘type’: ‘ir.actions.act_window_close’}, o el retorno de la vista original.
La Importancia para el Workflow
Los Wizards son la herramienta estándar de Odoo para guiar al usuario a través de pasos o para ejecutar acciones que requieren una entrada previa. Entender TransientModel es clave para crear flujos de trabajo profesionales.
Explicación Detallada en Vídeo
En el siguiente vídeo, te muestro paso a paso la estructura del modelo transitorio, la configuración del XML (target=»new») y, lo más importante, cómo se cierra el pop-up correctamente después de que el código Python se ejecuta.
Código Fuente en GitLab
Puedes consultar el código fuente completo de esta lección, con la implementación del Wizard y su modelo transitorio, directamente en nuestro repositorio.
➡️ Ver el Código en GitLab: https://github.com/angelmoya/calendario-adviento-curso-tecnico-odoo-19/tree/a414caeed9e1d87200131f0e46a3a97dc9a9319c
Conecta Conmigo y Sigue Aprendiendo
¡Ya puedes crear cualquier formulario emergente! Mañana, el campo más útil para compartir datos.
- LinkedIn: Conecta conmigo en LinkedIn
YouTube: ¡No olvides suscribirte al canal para no perderte ninguna lección! http://www.youtube.com/@AngelMoya-Odoo