OdooWiki OCA HUB

Web Domain Field

web_domain_field folder_open OCA/web open_in_new
Sin categoría Licencia: AGPL-3

Este addon técnico permite a los desarrolladores especificar un dominio de campo en una vista utilizando el valor de otro campo de esa misma vista, en lugar de hacerlo como un atributo XML estático.

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 16.0

Permite que una vista use el valor de otro campo en la misma pantalla como filtro (dominio) para un campo, en lugar de un filtro fijo escrito en la vista. Es un bloque de construcción técnico para desarrolladores.

Este es un módulo técnico que no tiene menús, pantallas ni modelos de base de datos propios. Cambia la forma en que se pueden construir las vistas de Odoo: normalmente la lista de valores permitidos que se muestra para un campo (su "dominio", es decir, el filtro aplicado a los registros ofrecidos) se fija cuando se escribe la vista. Con este módulo, ese filtro puede provenir en su lugar del valor actual de otro campo en la misma vista.

Qué significa esto en la práctica:

  • Un desarrollador puede dirigir el filtro de un campo hacia otro campo, de modo que las opciones ofrecidas se actualicen según lo que el usuario ya haya introducido o seleccionado en el formulario.
  • El módulo solo añade código de front-end cargado en la interfaz de backend de Odoo; no declara nuevos modelos, ni menús, ni informes, ni acciones programadas.
  • Solo depende del módulo estándar web, por lo que no modifica por sí mismo ninguna área de negocio como ventas, inventario o contabilidad.

Como el módulo no contiene modelos del lado del servidor ni archivos de datos, no se añaden reglas de negocio, comprobaciones, valores predeterminados ni correos electrónicos. Su efecto solo es visible cuando un desarrollador lo utiliza en una vista personalizada; los usuarios finales simplemente ven opciones de campo que se adaptan al resto del formulario. El manifiesto también registra archivos de prueba para la suite de pruebas de interfaz, lo que confirma que la funcionalidad está verificada en el cliente de backend.

Texto generado por IA (DeepSeek) al leer el código de la versión 16.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: 5 confirmadas, 4 sin información de 9 versiones.

terminal Instalación y uso

Documentación de OCA · Odoo 16.0

Cuando defines una vista puedes especificar en los campos relacionales un atributo domain. Este atributo se evalúa como filtro a aplicar al mostrar los registros existentes para su selección.

<field name="product_id" domain="[('type','=','product')]"/>

El valor proporcionado para el atributo domain debe ser una cadena que represente un domain de Odoo válido. Esta cadena se evalúa en el lado del cliente en un contexto restringido donde podemos referenciar como operando derecho los valores de los campos presentes en el formulario y un conjunto limitado de funciones.

En este contexto es difícil construir un domain complejo y nos enfrentamos a algunas limitaciones como:

  • La sintaxis para incluir en tu domain un criterio que involucre valores de un campo x2many es compleja.
  • El lado derecho del domain en el caso de x2many puede involucrar una enorme cantidad de ids (problema de rendimiento).
  • Los domains calculados por un onchange en otro campo no se recalculan cuando modificas el formulario y no modificas el campo que desencadena el onchange.
  • No es posible extender un domain existente. Debes redefinir completamente el domain en tu addon especializado
  • etc...

Con el fin de mitigar estas limitaciones este nuevo addon te permite usar el valor de un campo como domain de otro campo en la definición xml de tu vista.

<field name="product_id_domain" invisible="1"/>
<field name="product_id" domain="product_id_domain"/>

El campo usado como domain debe proporcionar el domain como una cadena codificada en JSON.

product_id_domain = fields.Char(
    compute="_compute_product_id_domain",
    readonly=True,
    store=False,
)

@api.depends('name')
def _compute_product_id_domain(self):
    for rec in self:
        rec.product_id_domain = json.dumps(
            [('type', '=', 'product'), ('name', 'like', rec.name)]
        )

En realidad no necesitas este módulo para elaborar un domain dinámico. Odoo viene con su propia librería web py.js para analizar expresiones como los domains. py.js admite expresiones más complejas que simples listas estáticas.

Aquí tienes un ejemplo de un domain condicional basado en el valor de otro campo:

Para los módulos de OCA, este método es preferible a añadir este módulo como dependencia adicional.

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.