You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo 15销售订单行中如何显示所选产品的全部供应商

Odoo 15销售订单行显示产品所有供应商解决方案

问题根源

你用了Many2one字段类型,它只能关联单条记录,而产品的seller_ids是One2many类型(对应product.supplierinfo模型,存储多条供应商关联数据),所以只会显示单个供应商。另外product_id.seller_ids_name字段并不存在,正确关联路径是product_id.seller_ids.name,但字段类型错误依然无法解决多供应商展示问题。

解决方案

根据需求选择以下两种实现方式:

1. 仅展示供应商名称(用标签形式)

定义Many2many字段关联供应商伙伴模型,通过计算字段提取所有供应商:

from odoo import models, fields, api

class SaleOrderLine(models.Model):
    _inherit = 'sale.order.line'

    vendors = fields.Many2many(
        'res.partner', 
        string='供应商',
        compute='_compute_vendors'
    )

    @api.depends('product_id')
    def _compute_vendors(self):
        for line in self:
            if line.product_id:
                # 从产品供应商记录中提取所有关联的伙伴
                line.vendors = line.product_id.seller_ids.mapped('name')
            else:
                line.vendors = False

在销售订单行的视图中添加字段(用标签小部件优化显示):

<field name="vendors" widget="many2many_tags"/>

2. 展示供应商详细信息(如单价、交货期)

定义One2many字段直接关联产品供应商信息模型:

from odoo import models, fields, api

class SaleOrderLine(models.Model):
    _inherit = 'sale.order.line'

    vendors_info = fields.One2many(
        'product.supplierinfo', 
        string='供应商信息',
        compute='_compute_vendors_info'
    )

    @api.depends('product_id')
    def _compute_vendors_info(self):
        for line in self:
            if line.product_id:
                line.vendors_info = line.product_id.seller_ids
            else:
                line.vendors_info = False

在视图中用树形控件展示详细数据:

<field name="vendors_info">
    <tree>
        <field name="name"/>
        <field name="price"/>
        <field name="delay"/>
    </tree>
</field>

内容的提问来源于stack exchange,提问作者Zoro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 14:45:24