Día 7: Relaciones Avanzadas (ManyToMany) con Etiquetas
¡Llegamos a la última lección de esta serie! Hoy vamos a explorar las relaciones «Muchos a Muchos» (ManyToMany), que son perfectas para categorizar o etiquetar registros. En nuestro caso, un libro podrá tener múltiples etiquetas (Fantasía, Clásico, Ciencia Ficción) y una misma etiqueta podrá estar en múltiples libros.
Explicación en Vídeo
En el vídeo final, te muestro cómo implementar una relación `ManyToMany`, incluyendo el modelo, las vistas y cómo Odoo nos provee un widget fantástico para gestionarlas.
Código Fuente en GitHub
Puedes consultar el código fuente completo de esta lección directamente en nuestro repositorio.
Conceptos Clave de Hoy:
1. **Nuevo Modelo `tag.py`**: Creamos el modelo `library.tag` para almacenar nuestras etiquetas. La particularidad es que hemos añadido una constraint de SQL (`_sql_constraints`) para asegurar que no puedan existir dos etiquetas con el mismo nombre.
2. **Campo `ManyToMany`**: En `book.py`, hemos añadido el campo `tag_ids = fields.ManyToMany(‘library.tag’, string=’Tags’)`. Odoo gestionará automáticamente la tabla intermedia necesaria para esta relación.
3. **Vistas y Seguridad para Tags**: Como con cualquier modelo nuevo, hemos creado sus vistas (`tag_views.xml`) y sus permisos de acceso en `ir.model.access.csv`.
4. **Widget `many2many_tags`**: En la vista de formulario del libro (`book_views.xml`), hemos añadido el campo `tag_ids` con un widget especial: `<field name=»tag_ids» widget=»many2many_tags»/>`. Esto transforma la selección en un sistema de etiquetas de colores muy visual y cómodo.
¿Preguntas o Sugerencias?
Con esto concluimos la base de nuestro módulo. ¿Qué te ha parecido la relación `ManyToMany`? Espero que este curso te haya sido de gran utilidad. ¡Conecta conmigo para seguir aprendiendo!
* **LinkedIn:** [Conecta conmigo en LinkedIn](https://www.linkedin.com/in/angelmoya-es/)
* **YouTube:** ¡No olvides suscribirte al canal para no perderte ninguna lección! https://www.youtube.com/channel/UCg-71aQMkhYAZgtB6azKKkQ
—
#Odoo #DesarrolloOdoo #OdooDeveloper #CursoOdoo #OdooTraining #ManyToMany #Tags #Widgets #FinalProject