OdooWiki OCA HUB

Base Many2many Custom Field

base_m2m_custom_field folder_open OCA/server-tools open_in_new
Technical Settings Licencia: AGPL-3

Este módulo añade un nuevo campo personalizado Many2many con un atributo create_table.

Traducción automática al español (DeepSeek) de la descripción original de OCA, que está en inglés.

auto_awesome Qué hace este módulo

Generado por IA a partir del código · Odoo 18.0

Añade un nuevo tipo de campo técnico que permite a los desarrolladores controlar si la tabla de enlace de la base de datos para una relación de muchos a muchos se crea automáticamente. No cambia nada visible para los usuarios cotidianos.

Este es un módulo técnico sin pantallas, menús ni informes. Introduce un nuevo tipo de campo, Many2manyCustom, que se comporta como un campo many-to-many normal pero añade una opción: create_table.

  • Cuando create_table se deja en su valor predeterminado (true), el campo funciona exactamente como un campo many-to-many estándar y su tabla relacional de base de datos se crea cuando se configura el campo.
  • Cuando create_table se establece en false, el módulo omite la creación automática de esa tabla relacional.

Esto ofrece a los desarrolladores una forma de declarar una relación many-to-many cuya tabla de enlace se gestiona en otro lugar, por ejemplo creada por otro módulo o por un script manual de base de datos, sin que Odoo intente crearla de nuevo.

El módulo depende únicamente de base y no añade ningún modelo, vista, menú, botón, informe, acción programada ni regla de negocio. No cambia ninguna pantalla ni flujo de trabajo existente de Odoo. Su efecto se limita a cómo se construye la estructura de la base de datos cuando se utiliza un campo de este nuevo tipo en un desarrollo personalizado.

Depende de

base

Texto generado por IA (DeepSeek) al leer el código de la versión 18.0 en GitHub; puede contener errores, así que verifícalo en el código antes de decidir. Ver el código en GitHub

Disponibilidad por versión

Revisado: 2026-11-03
Confirmado (verificado en repositorio y rama) Estimado (sin verificar) Sin información

Estado de confirmación: 6 confirmadas, 3 sin información de 9 versiones.

Fuentes · Odoo 12.0

Confirmado el 2026-11-03 en la rama 12.0 de OCA/server-tools.

terminal Instalación y uso

Documentación de OCA · Odoo 18.0

El campo Many2manyCustom es útil cuando se necesita un acceso directo a la tabla relacional, por ejemplo para poder editarla en una vista de árbol dedicada.

Consideremos los siguientes modelos:

class MyModelA(models.Model):

    _name = 'my.model.a'

    my_model_b_ids = fields.Many2manyCustom(
        'my.model.b',
        'my_model_a_b_rel',
        'my_model_a_id',
        'my_model_b_id',
        create_table=False,
    )


class MyModelB(models.Model):

    _name = 'my.model.b'

    my_model_a_ids = fields.Many2manyCustom(
        'my.model.a',
        'my_model_a_b_rel',
        'my_model_b_id',
        'my_model_a_id',
        create_table=False,
    )


class MyModelABRel(models.Model):

    _name = 'my.model.a.b.rel'

    my_model_a_id = fields.Many2one(
        'my.model.a',
        required=True,
        index=True,  # Index is mandatory here
    )
    my_model_b_id = fields.Many2one(
        'my.model.b',
        required=True,
        index=True,  # Index is mandatory here
    )

Al establecer create_table=False en el campo Many2manyCustom, y usar el nombre de la tabla relacional como _name para el modelo relacional, podemos definir una vista de árbol dedicada para my.model.a.b.rel.

<record id="my_model_a_b_rel_list_view" model="ir.ui.view">
    <field name="name">my.model.a.b.rel.list.view</field>
    <field name="model">my.model.a.b.rel</field>
    <field name="arch" type="xml">
        <list editable="top">
            <field name="my_model_a_id" />
            <field name="my_model_b_id" />
        </list>
    </field>
</record>

Traducción automática al español (DeepSeek) de la documentación original de OCA; los comandos y el código no se traducen. Sin información verificada en OCA: Instalación, Configuración.

info

Datos importados de GitHub: esta ficha refleja la última revisión del catálogo, no una consulta en directo. Verifica siempre en la documentación del módulo y en staging antes de instalar en producción.