Odoo14如何继承并修改销售订单行sale.order.line的Name字段
Odoo销售订单行描述字段调整实现方案
核心实现思路
不需要修改Odoo原生代码,通过自定义模块继承对应模型重写相关逻辑即可,有两种实现方式可选:
方式1:重写product_id_change方法(兼容所有主流Odoo版本)
- 第一步:创建自定义Odoo模块,在模块的models目录下新建py文件继承
sale.order.line模型 - 第二步:重写
product_id_change方法,调用父类逻辑后覆盖name字段赋值,示例代码如下:
from odoo import models, api class SaleOrderLineInherit(models.Model): _inherit = 'sale.order.line' @api.onchange('product_id') def product_id_change(self): # 调用父类原方法,保留价格、单位、税等自动计算逻辑 result = super().product_id_change() if self.product_id: # 仅取销售描述,无销售描述时兜底显示产品名称 self.name = self.product_id.description_sale or self.product_id.name return result
- 第三步:将自定义模块在Odoo中安装升级即可生效
方式2:重写描述生成方法(适配Odoo 16+版本,更轻量化)
Odoo 16及后续版本将销售订单行描述的生成逻辑抽离为独立方法,直接重写该方法即可,无需修改onchange逻辑:
from odoo import models class SaleOrderLineInherit(models.Model): _inherit = 'sale.order.line' def _get_sale_order_line_multiline_description_sale(self, product): return product.description_sale or product.name
验证说明
配置完成后新建销售订单,选择对应产品时,订单行的Description字段将仅展示产品的description_sale内容,不会自动拼接产品名称。
内容的提问来源于stack exchange,提问作者Gbn
相关产品推荐
相关产品推荐

