Mixins en Odoo: el caso mail.thread
Los mixins son piezas de código reutilizables que puedes “mezclar” con tus modelos para añadir funcionalidades comunes sin duplicar código. mail.thread es el más usado: con una sola línea de herencia tu modelo gana chatter, tracking de campos, notificaciones por correo y mensajes.
1
¿Qué son los mixins?
En Odoo, un mixin es una clase auxiliar que no representa un modelo por sí misma (no suele tener tabla dedicada en la BD), sino que se utiliza para añadir funcionalidades comunes a otros modelos.
Una forma de interpretarlos: piezas de código reutilizables que puedes “mezclar” (traducción de “mixin”) con diferentes modelos para extender sus capacidades sin duplicar código.
- No son modelos en BD: usan
_name = "..."pero también_abstract = True, lo que significa que no se instancian solos. - Código que aplica a muchos modelos: seguimiento de cambios, actividades programadas, etc.
- Para usarlos: basta con añadir la clase a la herencia de tu modelo.
2
Mixins comunes en Odoo
3
Caso práctico: usar mail.thread
Para verlo en acción, creamos un módulo personalizado con un modelo sencillo llamado blog.test con dos campos: nombre y código. Le agregamos su vista lista, formulario y una acción/menú raíz.
3.1 — Definición del modelo

3.2 — Vista formulario

3.3 — Registro vacío sin chatter

4
Heredar mail.thread en el modelo
Para añadir las funcionalidades del mixin, lo añadimos dentro de las herencias en la definición de la clase Python:

mail en el manifiesto. Si falta, al actualizar verás un error en la terminal — la herencia falla porque no encuentra la clase del mixin.
5
Activar el chatter en la vista
Al actualizar el módulo no notamos cambios en la UI todavía — pero internamente el modelo ya tiene todas las funcionalidades del mixin. Para mostrar el chatter, modificamos la vista formulario añadiendo el bloque correspondiente:

Al recargar el registro, el chatter aparece. Los usuarios ya pueden enviar mensajes, notas internas y, con la configuración adecuada, notificaciones por correo electrónico (incluso responderlas desde el mismo correo):

6
Tracking de cambios en campos específicos
El mixin mail.thread añade un potente sistema de seguimiento. Para activarlo en un campo, basta con marcarlo con tracking=True:

A partir del cambio, cualquier modificación al campo queda registrada en el chatter. Por ejemplo, al actualizar el nombre, se ve el cambio histórico:

7
Métodos del backend que añade mail.thread
Del lado del backend se incorporan funciones para enviar mensajes y administrar seguidores fácilmente. Las más importantes:
mail para entender exactamente qué espera cada una.
8
Ejemplo: botón que publica con message_post
Ejemplificamos el uso. Añadimos un botón en la vista formulario que llama a un método que usa message_post:

El método Python que ejecuta el botón:

Al pulsar el botón, el mensaje aparece automáticamente en el chatter:

9
Consejos rápidos
super() correctamente.📌 En resumen
Los mixins son la forma idiomática de Odoo para reutilizar comportamientos entre modelos. mail.thread es el más conocido y aporta valor inmediato: chatter, tracking de campos, notificaciones por correo y métodos listos para usar.
Antes de programar funcionalidad transversal desde cero, revisa qué mixins existen. La mayoría de las veces, el comportamiento que buscas ya está implementado y te ahorras tiempo y bugs. En Exdoo aplicamos esta filosofía en cada módulo: aprovechar el ecosistema antes de duplicar — y compartimos contenido técnico para developers Odoo.
Deja un comentario