Día 7: Relaciones Avanzadas (ManyToMany) con Etiquetas

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.

Ver el código en GitHub

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