Día 17: Dominando el Contexto (context) — La Información Dinámica en Odoo

¡Continuamos con la Semana 3! En Odoo, cada llamada a un método Python (create, write, un botón, etc.) se realiza con tres elementos principales: la colección de registros (self), el request (kwargs) y, lo más importante, el Contexto.

El Contexto es una pieza de información esencial. Es un diccionario de Python que actúa como un diccionario de variables globales y locales para cada petición. Te permite saber el estado del entorno en ese momento.

¿Qué hemos cubierto en el Día 17?

Hemos visto ejemplos de cómo leer el contexto en Python y, más crucial aún, cómo modificarlo desde la capa XML para inyectar información.

Los componentes clave que hemos cubierto son:

1. Lectura del Contexto en Python

Dentro de cualquier método Python, el contexto está disponible a través de self.env.context. Algunas de las claves más importantes que podemos leer son:

  • uid: El ID del usuario que está ejecutando el método.
  • lang: El idioma de la sesión del usuario.
  • tz: La zona horaria del usuario.
  • company_id: El ID de la compañía actual (esencial para la multi-compañía).

2. Modificación del Contexto desde XML

La parte más poderosa es manipular el contexto para cambiar el comportamiento de las acciones subsiguientes. Esto se hace principalmente en:

  • Acciones de Ventana (ir.actions.act_window): Podemos añadir valores por defecto que se aplicarán al crear nuevos registros. Por ejemplo, context=»{‘default_partner_id’: active_id}» para asignar el ID activo a un campo relacionado.
  • Botones: Podemos pasar información adicional a un método Python.

3. Usos Estratégicos del Contexto

El contexto se utiliza estratégicamente para:

  • Valores por Defecto: Inyectar valores iniciales en nuevos formularios (similar a default_get, pero definido desde el front-end).
  • Filtros de Dominio: Limitar los resultados de un campo Many2one o One2many.
  • Multi-Compañía: Asegurar que la lógica se ejecute solo para la compañía actual.

La Importancia para el Desarrollo Avanzado

El contexto es la forma principal en que la interfaz de usuario se comunica con el backend sobre las condiciones actuales de la sesión. Dominarlo es un requisito para personalizar Odoo a un nivel avanzado.


Explicación Detallada en Vídeo

En el siguiente vídeo, te muestro paso a paso cómo acceder al contexto en Python, y la sintaxis XML necesaria para inyectar nuevos valores en él, usando el ejemplo de asignar un valor por defecto al crear un registro.

[EMBED YOUTUBE VIDEO DÍA 17 AQUÍ]


Código Fuente en GitLab

Puedes consultar el código fuente completo de esta lección, con la implementación de la lectura y modificación del contexto, 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 tienes una de las herramientas más poderosas de Odoo! Mañana, el campo más útil para compartir datos.

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