Product Attribute Value Dependent Mixin
Este módulo técnico introduce un mixin reutilizable diseñado para permitir que cualquier modelo establezca dependencias sobre valores específicos de atributos de producto. Al heredar de este mixin, los desarrolladores pueden vincular fácilmente reglas de negocio, configuraciones o registros a variantes de producto precisas sin duplicar lógica de filtrado compleja.
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.0Bloque de construcción técnico que permite a otros modelos de Odoo almacenar una plantilla de producto, una variante específica y un conjunto de valores de atributos de producto, y reducir automáticamente las opciones mostradas al usuario. No añade ningún menú ni pantalla por sí mismo.
Este es un módulo técnico: no añade ningún menú, botón ni informe que un usuario pueda abrir directamente. En su lugar, proporciona una base reutilizable (un mixin) que otros módulos pueden conectar a sus propios registros.
Cuando un modelo lo utiliza, cada registro obtiene: - un campo Product Template y un campo Product (la variante específica); - un campo Attribute Values donde se pueden seleccionar varios valores de atributo de producto (por ejemplo, valores de color o talla); - dos campos auxiliares que se calculan automáticamente y no están pensados para editarse a mano.
Comportamiento automático: - En cuanto se elige una plantilla de producto, la lista de variantes de producto seleccionables se restringe a las variantes que realmente existen para esa plantilla. - Del mismo modo, la lista de valores de atributo seleccionables se restringe a los valores que realmente utilizan las líneas de atributo de esa plantilla. - Un método auxiliar comprueba si un producto dado coincide con el registro: coincide cuando la variante almacenada es ese producto, cuando la plantilla es la misma y cuando todos los valores de atributo seleccionados están presentes en los atributos de variante del producto.
Toca los datos de plantilla de producto, variante de producto y valor de atributo de producto. Como es abstracto, instalarlo por sí solo no cambia nada visible en la interfaz; su valor aparece solo en los módulos que heredan de él.
Depende de
Lo necesitan otros módulos
Modelos y campos (1)
- attribute.value.dependent.mixin · modelo nuevoproduct_id, product_tmpl_id (Product Template), attribute_value_ids (Attribute Values), available_product_domain, available_attribute_value_domain
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-03Estado de confirmación: 2 confirmadas, 7 sin información de 9 versiones.
Fuentes · Odoo 18.0
Confirmado el 2026-11-03 en la rama 18.0 de OCA/product-attribute.
terminal Instalación y uso
Documentación de OCA · Odoo 18.0Campos
El mixin expone los siguientes campos:
product_tmpl_id: la plantilla de producto sobre la que filtrar (opcional).product_id: una variante de producto específica (opcional).attribute_value_ids: un conjunto de valores de atributo sobre los que filtrar (opcional).available_product_domain: un dominio calculado para restringir la selección deproduct_iden las vistas, basado enproduct_tmpl_id.available_attribute_value_domain: un dominio calculado para restringir la selección deattribute_value_idsen las vistas, basado enproduct_tmpl_id.
Heredar el Mixin
Para usar este mixin, hereda de attribute.value.dependent.mixin en tu modelo junto con tu modelo base:
from odoo import fields, models
class MyModel(models.Model):
_name = "my.model"
_inherit = ["my.model", "attribute.value.dependent.mixin"]Todos los campos del mixin (product_tmpl_id, product_id, attribute_value_ids, available_product_domain, available_attribute_value_domain) están disponibles automáticamente en tu modelo.
Usar los campos de dominio en una vista de formulario
Los campos de dominio calculados deben referenciarse en el atributo domain de los campos correspondientes en la vista. Odoo 18.0 carga automáticamente los campos referenciados en los atributos domain, por lo que no se necesita ninguna declaración adicional.
<record id="view_my_model_form" model="ir.ui.view">
<field name="name">my.model.form</field>
<field name="model">my.model</field>
<field name="arch" type="xml">
<form>
<group>
<field name="product_tmpl_id"/>
<field name="product_id"
domain="available_product_domain"
context="{'default_product_tmpl_id': product_tmpl_id}"/>
<field name="attribute_value_ids"
domain="available_attribute_value_domain"
widget="many2many_tags"/>
</group>
</form>
</field>
</record>Lógica de coincidencia
El método is_matching_product(product) valida si una variante de producto dada satisface las restricciones configuradas. Todos los campos son opcionales y actúan como filtros independientes combinados con lógica AND:
- Si
product_idestá establecido, es el criterio más restrictivo: el método devuelveTruesolo si el producto dado es exactamente esa variante, independientemente de los demás campos. - Si
product_tmpl_idestá establecido, el producto dado debe pertenecer a esa plantilla. - Si
attribute_value_idsestá establecido, el producto dado debe coincidir con los valores de atributo configurados con la siguiente lógica: - Los valores que pertenecen al mismo atributo se combinan con OR (por ejemplo, talla S o M).
- Los valores que pertenecen a atributos diferentes se combinan con AND (por ejemplo, talla S o M y color Rojo).
- Dado que un valor de atributo puede existir en varias plantillas,
product_tmpl_idyattribute_value_idsdeben usarse juntos para evitar coincidencias no deseadas entre plantillas. - Si no se establece ningún campo, el método devuelve
Truepara cualquier producto (sin restricción).
Usar is_matching_product
El método is_matching_product(product) se puede llamar desde código Python para comprobar si un registro product.product dado satisface las restricciones definidas en un registro del mixin:
for rule in self.env["my.model"].search([]):
if rule.is_matching_product(product):
# apply ruleTraducció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.
Las instrucciones de instalación, el paquete de distribución, las dependencias y los pasos de configuración no se muestran porque todavía no se han verificado en la documentación del módulo para ninguna versión.
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.