product.product: campos, relaciones y API
El modelo product.product («Variante de producto») es un modelo persistente declarado por el módulo Productos y listas de precios y ampliado por 35 módulos más. Expone 137 campos, 108 de ellos declarados directamente en el modelo; 93 campos de otros modelos apuntan a él. A continuación encontrará cada campo con su nombre técnico, tipo, etiqueta en español y relaciones, y un ejemplo de llamada a la API JSON-2 de Odoo 19.
Ficha de identidad
- Nombre técnico
product.product- Etiqueta
- Variante de producto
- Tipo
- Persistente (models.Model)
- Tabla SQL
product_product- Módulo de origen
- Productos y listas de precios (
product) - Ampliado por
- account, sale, stock, stock_account, event_product, event_booth_sale, hr_expense, point_of_sale, loyalty, mrp, mrp_account, purchase, purchase_stock, product_expiry, repair, mrp_subcontracting, mrp_subcontracting_account, stock_dropshipping, mrp_subcontracting_purchase, pos_hr, pos_loyalty, pos_self_order, product_margin, sale_project, purchase_requisition, sale_edi_ubl, sale_gelato, sale_timesheet, website_sale, website_sale_slides, website_event_sale, website_sale_stock, website_sale_wishlist, website_sale_comparison, website_sale_loyalty
- Orden por defecto (_order)
default_code, name, id- Hereda de (mixins)
- mail.threadmail.activity.mixinpos.load.mixin
- Delegación (_inherits)
- product.template: los campos de este modelo también están disponibles, mediante
product_tmpl_id
Campos del modelo
108 campos propios, 24 heredados de mixins y 5 campos automáticos del ORM. Haga clic en un nombre para obtener el enlace directo al campo.
137 de 137 campos mostrados
| Nombre técnico | Etiqueta | Tipo | Detalles |
|---|---|---|---|
| active | Activo Si no está marcado, permitirá ocultar el producto sin eliminarlo. | boolean | |
| additional_product_tag_ids | Etiquetas de la variante | many2many | |
| all_product_tag_ids | Todas las etiquetas de producto | many2many | calculado |
| avg_cost | Coste promedio | monetary | calculado añadido por Contabilidad del SGA ( |
| barcode | Código de barras Número de artículo internacional usado para la identificación de producto. | char | |
| base_unit_count | Número de unidades de base Mostrar el precio unitario base en sus páginas de comercio electrónico. Establecer en 0 para ocultarlo para este producto. | float | obligatorio añadido por Comercio electrónico ( |
| base_unit_id | Unidad de medida personalizada Defina una unidad personalizada a mostrar en el campo de precio por unidad de medida. | many2one | añadido por Comercio electrónico ( |
| base_unit_name | Nombre de unidades de base Muestra la unidad personalizada para los productos si está definida o, en caso contrario, la unidad de medida seleccionada. | char | calculado añadido por Comercio electrónico ( |
| base_unit_price | Precio por unidad | monetary | calculado añadido por Comercio electrónico ( |
| bom_count | N.° de la lista de materiales | integer | calculado añadido por Fabricación ( |
| bom_line_ids | Componentes de LdM | one2many | inverso: añadido por Fabricación ( |
| can_image_1024_be_zoomed | ¿Se puede ampliar la imagen 1024? | boolean | calculado |
| can_image_variant_1024_be_zoomed | ¿Se puede ampliar la imagen 1024 de la variante? | boolean | calculado, almacenado |
| channel_ids | Cursos | one2many | inverso: añadido por Vender cursos ( |
| code | Referencia | char | calculado |
| combination_indices | Índices de combinación | char | calculado, almacenado |
| company_currency_id | Moneda de la valoración Campo técnico para mostrar correctamente la moneda elegida de la empresa que corresponde con el valor total de las capas de valoración del producto | many2one | calculado añadido por Contabilidad del SGA ( |
| date_from | Fecha desde del margen | date | calculado añadido por Márgenes por productos ( |
| date_to | Fecha hasta del margen | date | calculado añadido por Márgenes por productos ( |
| default_code | Referencia interna | char | |
| event_ticket_ids | Entradas del evento | one2many | inverso: añadido por Producto de eventos ( |
| expected_margin | Margen previsto Venta prevista - Coste normal | float | calculado añadido por Márgenes por productos ( |
| expected_margin_rate | Margen previsto (%) Margen previsto * 100 / Venta prevista | float | calculado añadido por Márgenes por productos ( |
| free_qty | Cantidad disponible Available quantity (computed as Quantity On Hand - reserved quantity - quantity to remove) In a context with a single Stock Location, this includes goods stored in this location, or any of its children. In a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children. Otherwise, this includes goods stored in any Stock Location with 'internal' type. | float | calculado añadido por Inventario ( |
| gelato_product_uid | UID del producto de Gelato | char | solo lectura añadido por Gelato ( |
| image_1024 | Imagen 1024 | image | calculado |
| image_128 | Imagen 128 | image | calculado |
| image_1920 | Imagen | image | calculado |
| image_256 | Imagen 256 | image | calculado |
| image_512 | Imagen 512 | image | calculado |
| image_variant_1024 | Imagen de variante 1024 | image | related: |
| image_variant_128 | Imagen de variante 128 | image | related: |
| image_variant_1920 | Imagen de variante | image | |
| image_variant_256 | Imagen de variante 256 | image | related: |
| image_variant_512 | Imagen de variante 512 | image | related: |
| import_attribute_values | Valores del producto | char | calculado |
| incoming_qty | Entrante Quantity of planned incoming products. In a context with a single Stock Location, this includes goods arriving to this Location, or any of its children. In a context with a single Warehouse, this includes goods arriving to the Stock Location of this Warehouse, or any of its children. Otherwise, this includes goods arriving to any Stock Location with 'internal' type. | float | calculado añadido por Inventario ( |
| invoice_state | Estado de la factura | selection | solo lecturacalculado Valores: añadido por Márgenes por productos ( |
| is_favorite | Es favorito | boolean | related: |
| is_in_purchase_order | Esté en el pedido de compra | boolean | calculado añadido por Compra ( |
| is_in_selected_section_of_order | Está en la sección seleccionada del pedido | boolean | |
| is_kits | Es un kit | boolean | calculado añadido por Fabricación ( |
| is_product_variant | Es una variante de producto | boolean | calculado |
| lot_properties_definition | Propiedades del lote | properties_definition | añadido por Inventario ( |
| lst_price | Precio de venta El precio de venta se gestiona desde la plantilla de producto. Haga clic en el botón 'Configurar variantes' para establecer los precios de los atributos adicionales. | float | calculado |
| monthly_demand | Demanda mensual | float | calculado añadido por Stock de Compra ( |
| mrp_product_qty | Fabricado | float | calculado añadido por Fabricación ( |
| nbr_moves_in | Número de movimientos de entrada Número de movimientos de stock entrante en los últimos 12 meses | integer | calculado añadido por Inventario ( |
| nbr_moves_out | Número de movimientos de salida Número de movimientos de stock saliente en los últimos 12 meses | integer | calculado añadido por Inventario ( |
| nbr_reordering_rules | Reglas de reabastecimiento | integer | calculado añadido por Inventario ( |
| normal_cost | Coste normal Suma de la multiplicación de los precios de coste y cantidad de facturas de proveedores | float | calculado añadido por Márgenes por productos ( |
| orderpoint_ids | Reglas de stock mínimo | one2many | inverso: añadido por Inventario ( |
| outgoing_qty | Saliente Quantity of planned outgoing products. In a context with a single Stock Location, this includes goods leaving this Location, or any of its children. In a context with a single Warehouse, this includes goods leaving the Stock Location of this Warehouse, or any of its children. Otherwise, this includes goods leaving any Stock Location with 'internal' type. | float | calculado añadido por Inventario ( |
| partner_ref | Ref. del cliente | char | calculado |
| price_extra | Precio adicional de la variante Esta es la suma de los precios adicionales de todos los atributos | float | calculado |
| pricelist_rule_ids | Reglas de la lista de precios | one2many | calculado inverso: |
| product_catalog_product_is_in_bom | El producto del catálogo está en la LdM | boolean | calculado añadido por Fabricación ( |
| product_catalog_product_is_in_mo | El producto del catálogo está en la orden de fabricación | boolean | calculado añadido por Fabricación ( |
| product_catalog_product_is_in_repair | El producto del catálogo está en reparación | boolean | calculado añadido por Reparaciones ( |
| product_catalog_product_is_in_sale_order | El elemento del catálogo de productos está en el pedido de venta | boolean | calculado añadido por Ventas ( |
| product_document_count | Número de documentos | integer | calculado |
| product_document_ids | Documentos | one2many | inverso: |
| product_template_attribute_value_ids | Valores de atributo | many2many | |
| product_template_variant_value_ids | Valores de las variantes | many2many | |
| product_tmpl_id | Plantilla de producto | many2one | obligatorio |
| product_uom_ids | Código de barras de la unidad | one2many | inverso: |
| product_variant_image_ids | Imágenes adicionales para el producto | one2many | inverso: añadido por Comercio electrónico ( |
| purchase_avg_price | Precio unitario medio de compra Precio medio en facturas de proveedores | float | calculado añadido por Márgenes por productos ( |
| purchase_gap | Diferencia de compra Coste normal - Coste total | float | calculado añadido por Márgenes por productos ( |
| purchase_num_invoiced | # Facturado en compra Suma de Cantidad de facturas de proveedores | float | calculado añadido por Márgenes por productos ( |
| purchase_order_line_ids | Líneas de pedido de compra | one2many | inverso: añadido por Stock de Compra ( |
| purchased_product_qty | Comprado | float | calculado añadido por Compra ( |
| putaway_rule_ids | Reglas de almacenamiento | one2many | inverso: añadido por Inventario ( |
| qty_available | Cantidad real Current quantity of products. In a context with a single Stock Location, this includes goods stored at this Location, or any of its children. In a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children. stored in the Stock Location of the Warehouse of this Shop, or any of its children. Otherwise, this includes goods stored in any Stock Location with 'internal' type. | float | calculado añadido por Inventario ( |
| reordering_max_qty | Cantidad máxima de reabastecimiento | float | calculado añadido por Inventario ( |
| reordering_min_qty | Cantidad mínima de reabastecimiento | float | calculado añadido por Inventario ( |
| sale_avg_price | Precio unitario medio de venta Precio medio en las facturas de clientes. | float | calculado añadido por Márgenes por productos ( |
| sale_expected | Venta prevista Suma de la multiplicación del precio del catálogo de venta y la cantidad de las facturas de cliente | float | calculado añadido por Márgenes por productos ( |
| sale_num_invoiced | # Facturado en venta Suma de cantidad en facturas de cliente | float | calculado añadido por Márgenes por productos ( |
| sales_count | Vendido | float | calculado añadido por Ventas ( |
| sales_gap | Diferencia de ventas Venta prevista - Volumen de negocio | float | calculado añadido por Márgenes por productos ( |
| show_forecasted_qty_status_button | Mostrar botón de estado de cantidad prevista | boolean | calculado añadido por Inventario ( |
| show_on_hand_qty_status_button | Mostrar botón de estado de cantidad real | boolean | calculado añadido por Inventario ( |
| show_qty_update_button | Mostrar botón para actualizar cantidad | boolean | calculado añadido por Inventario ( |
| standard_price | Coste Value of the product (automatically computed in AVCO). Used to value the product when the purchase cost is not known (e.g. inventory adjustment). Used to compute margins on sale orders. | float | depende de la empresa |
| standard_price_update_warning | Advertencia estándar de actualización del precio | char | calculado añadido por Gastos ( |
| stock_move_ids | Movimiento de stock | one2many | inverso: añadido por Inventario ( |
| stock_notification_partner_ids | Notificaciones de disponibilidad | many2many | añadido por Disponibilidad del producto ( |
| stock_quant_ids | Cuanto del stock | one2many | inverso: añadido por Inventario ( |
| storage_category_capacity_ids | Capacidad de la categoría de almacenamiento | one2many | inverso: añadido por Inventario ( |
| suggest_estimated_price | Sugerir precio estimado | float | calculado añadido por Stock de Compra ( |
| suggested_qty | Cantidad sugerida | integer | calculado añadido por Stock de Compra ( |
| tax_string | Cadena de impuesto | char | calculado añadido por Facturación ( |
| total_cost | Coste total Sum of Multiplication of Invoice price and quantity of Vendor Bills | float | calculado añadido por Márgenes por productos ( |
| total_margin | Margen total Volumen de negocio - Coste total | float | calculado añadido por Márgenes por productos ( |
| total_margin_rate | Tasa de margen total (%) Margen total * 100 / Volumen de negocio | float | calculado añadido por Márgenes por productos ( |
| total_value | Valor total | monetary | calculado añadido por Contabilidad del SGA ( |
| turnover | Volumen de negocio Suma de la multiplicación del precio de factura y la cantidad de las facturas de cliente | float | calculado añadido por Márgenes por productos ( |
| used_in_bom_count | # LdM usados donde | integer | calculado añadido por Fabricación ( |
| valid_ean | El código de barras tiene un EAN válido | boolean | calculado añadido por Inventario ( |
| variant_bom_ids | Variantes de la LdM del producto | one2many→ mrp.bom | inverso: añadido por Fabricación ( |
| variant_ribbon_id | Cinta de la variante | many2one | añadido por Comercio electrónico ( |
| virtual_available | Cantidad prevista Forecast quantity (computed as Quantity On Hand - Outgoing + Incoming - Quantity to Remove) In a context with a single Stock Location, this includes goods stored in this location, or any of its children. In a context with a single Warehouse, this includes goods stored in the Stock Location of this Warehouse, or any of its children. Otherwise, this includes goods stored in any Stock Location with 'internal' type. | float | calculado añadido por Inventario ( |
| volume | Volumen | float | |
| website_id | Sitio web | many2one | related: añadido por Comercio electrónico ( |
| website_url | URL del sitio web La URL completa para acceder al documento a través del sitio web. | char | calculado añadido por Comercio electrónico ( |
| weight | Peso | float | |
| write_date | Escribir la fecha | datetime | calculado, almacenado |
| activity_calendar_event_id | Siguiente evento en el calendario de actividades. | many2one | calculado heredado de mail.activity.mixin |
| activity_date_deadline | Fecha límite de la siguiente actividad | date | solo lecturacalculado heredado de mail.activity.mixin |
| activity_exception_decoration | Decoración de Actividad de Excepción Tipo de actividad de excepción en el registro. | selection | calculado Valores: heredado de mail.activity.mixin |
| activity_exception_icon | Icono Icono para indicar una actividad de excepción. | char | calculado heredado de mail.activity.mixin |
| activity_ids | Actividades | one2many | inverso: heredado de mail.activity.mixin |
| activity_state | Estado de la actividad Status based on activities Overdue: Due date is already passed Today: Activity date is today Planned: Future activities. | selection | calculado Valores: heredado de mail.activity.mixin |
| activity_summary | Resumen de la siguiente actividad | char | related: heredado de mail.activity.mixin |
| activity_type_icon | Icono de tipo de actividad | char | related: heredado de mail.activity.mixin |
| activity_type_id | Tipo de la siguiente actividad | many2one | related: heredado de mail.activity.mixin |
| activity_user_id | Usuario responsable | many2one | solo lecturacalculado heredado de mail.activity.mixin |
| has_message | Tiene un mensaje | boolean | calculado heredado de mail.thread |
| message_attachment_count | Número de archivos adjuntos | integer | calculado heredado de mail.thread |
| message_follower_ids | Seguidores | one2many | inverso: heredado de mail.thread |
| message_has_error | Error de envío de mensaje Si está marcada, algunos mensajes tienen error de envío. | boolean | calculado heredado de mail.thread |
| message_has_error_counter | Número de errores Número de mensajes con error de envío | integer | calculado heredado de mail.thread |
| message_has_sms_error | Error de envío del SMS Si está marcada, algunos mensajes tienen error de envío. | boolean | calculado heredado de mail.thread |
| message_ids | Mensajes | one2many | inverso: heredado de mail.thread |
| message_is_follower | Es un seguidor | boolean | calculado heredado de mail.thread |
| message_needaction | Acción requerida Si está marcada, hay nuevos mensajes que requieren su atención. | boolean | calculado heredado de mail.thread |
| message_needaction_counter | Número de acciones Número de mensajes que requieren una acción | integer | calculado heredado de mail.thread |
| message_partner_ids | Seguidores (Contactos) | many2many | calculado heredado de mail.thread |
| my_activity_date_deadline | Fecha límite de mi actividad | date | solo lecturacalculado heredado de mail.activity.mixin |
| rating_ids | Calificaciones | one2many | inverso: heredado de mail.thread |
| website_message_ids | Mensajes del sitio web Historial de comunicación del sitio web | one2many | inverso: heredado de mail.thread |
| create_date | Creado el | datetime | solo lecturaautomático |
| create_uid | Creado por | many2one | solo lecturaautomático |
| display_name | Nombre mostrado | char | solo lecturacalculadoautomático |
| id | ID | integer | solo lecturaautomático |
| write_uid | Última actualización por | many2one | solo lecturaautomático |
Relaciones
Modelos enlazados desde este modelo
- event.event.ticket: event_ticket_ids
- mrp.bom: variant_bom_ids
- mrp.bom.line: bom_line_ids
- product.document: product_document_ids
- product.image: product_variant_image_ids
- product.pricelist.item: pricelist_rule_ids
- product.ribbon: variant_ribbon_id
- product.tag: additional_product_tag_ids, all_product_tag_ids
- product.template: product_tmpl_id
- product.template.attribute.value: product_template_attribute_value_ids, product_template_variant_value_ids
- product.uom: product_uom_ids
- purchase.order.line: purchase_order_line_ids
- res.currency: company_currency_id
- res.partner: stock_notification_partner_ids
- slide.channel: channel_ids
- stock.move: stock_move_ids
- stock.putaway.rule: putaway_rule_ids
- stock.quant: stock_quant_ids
- stock.storage.category.capacity: storage_category_capacity_ids
- stock.warehouse.orderpoint: orderpoint_ids
- website.base.unit: base_unit_id
Campos de otros modelos que apuntan aquí
- account.analytic.distribution.model: product_id
- account.analytic.line: product_id
- account.invoice.report: product_id
- account.move.line: product_id
- delivery.carrier: product_id
- event.booth.category: product_id
- event.booth.configurator: product_id
- event.event.configurator: product_id
- event.sale.report: product_id
- event.type.booth: product_id
- event.type.ticket: product_id
- hr.expense: product_id
- hr.expense.split: product_id
- loyalty.program: payment_program_discount_product_id, trigger_product_ids
- loyalty.reward: all_discount_product_ids, discount_line_product_id, discount_product_ids, reward_product_id, reward_product_ids
- loyalty.rule: product_ids, valid_product_ids
- mrp.bom: product_id
- mrp.bom.byproduct: product_id
- mrp.bom.line: product_id
- mrp.consumption.warning.line: product_id
- mrp.production: bom_product_ids, product_id
- mrp.production.split: product_id
- mrp.unbuild: product_id
- mrp.workcenter.capacity: product_id
- mrp.workorder: product_id
- pos.config: discount_product_id, down_payment_product_id, tip_product_id
- pos.order.line: product_id
- pos.pack.operation.lot: product_id
- product.combo.item: product_id
- product.image: product_variant_id
- product.label.layout: product_ids
- product.pricelist.item: product_id
- product.replenish: product_id
- product.supplierinfo: product_id
- product.tag: product_ids, product_product_ids
- product.template: accessory_product_ids, product_variant_id
- product.template.attribute.value: ptav_product_variant_ids
- product.uom: product_id
- product.value: product_id
- product.wishlist: product_id
- y 38 más
Leer este modelo por la API
Ejemplo de llamada a la API JSON-2 de Odoo 19: lectura de los cinco primeros registros con campos reales del modelo. Sustituya la instancia, la base y la clave API por las suyas.
curl -X POST "https://su-instancia.odoo.com/json/2/product.product/search_read" \
-H "Authorization: bearer $ODOO_API_KEY" \
-H "X-Odoo-Database: su-base" \
-H "Content-Type: application/json" \
-d '{"domain":[],"fields":["base_unit_count","product_tmpl_id","base_unit_id","variant_ribbon_id","website_id"],"limit":5}'import requests
BASE_URL = "https://su-instancia.odoo.com/json/2"
headers = {"Authorization": f"bearer {API_KEY}", "X-Odoo-Database": "su-base"}
res = requests.post(
f"{BASE_URL}/product.product/search_read",
headers=headers,
json={"domain": [], "fields": ["base_unit_count","product_tmpl_id","base_unit_id","variant_ribbon_id","website_id"], "limit": 5},
)
res.raise_for_status()
print(res.json())- El acceso a la API externa está reservado al plan Custom de Odoo.
- XML-RPC y JSON-RPC se retirarán en Odoo 22 (otoño de 2028): use JSON-2.
- Se aplican los permisos de acceso y las reglas de registro del usuario de la clave.
Citar esta herramienta
¿Escribe un tutorial, una documentación interna o una respuesta en un foro? Copie este enlace para dirigir a sus lectores a la ficha actualizada.
<a href="https://aidoo.ai/es/outils/explorateur-modeles-odoo/product-product">product.product (Odoo 19.0)</a>Fuentes
- Código fuente del modelo en GitHub
- Documentación de Odoo 19: ORM API
- Documentación de Odoo 19: API externa JSON-2
Datos verificados el 23 de septiembre de 2026 · Odoo 19.0 Community
¿Tiene un proyecto Odoo o quiere aprovechar su ERP con la IA? Hablemos
Implantación, desarrollo de módulos, conexión de Claude o ChatGPT a sus datos: cuéntenos su contexto y le responderemos en 24 horas laborables.