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
相关产品推荐
相关产品推荐

