Odoo插入销售订单行无需刷新页面的实现问题咨询
Odoo销售订单行间插入功能优化方案
问题说明
现有实现存在两个待优化点:
- 点击插入按钮触发全页刷新,无法保留当前滚动位置,大订单场景体验差
- 插入的行默认携带当前行产品信息,不符合空白行需求
优化实现
1. 修正模型层逻辑
首先调整add_line方法,实现空白行插入+批量更新序列提升效率:
from odoo import models, F def add_line(self): for rec in self: new_sequence = rec.sequence + 1 # 批量更新后续行序列,避免逐行循环大幅提升大订单处理效率 rec.order_id.order_line.filtered( lambda l: l.sequence >= new_sequence ).write({'sequence': F('sequence') + 1}) # 创建空白行,仅保留必填默认值,不继承当前行产品信息 self.env['sale.order.line'].create({ "order_id": rec.order_id.id, "sequence": new_sequence, "customer_lead": 0, "name": "", "price_unit": 0, "product_uom_qty": 1 }) # 返回局部刷新指令,避免全页重载 return { 'type': 'ir.actions.act_window', 'res_model': 'sale.order', 'view_mode': 'form', 'res_id': rec.order_id.id, 'target': 'current', 'flags': {'mode': 'edit'} }
2. 修改视图层按钮配置
给按钮添加Odoo内置无刷新交互标识,匹配删除按钮的局部刷新逻辑:
<button name="add_line" type="object" string="+" icon="fa-add" class="oe_edit_only o_list_button_add" onclick="event.stopPropagation();"/>
效果验证
修改后点击插入按钮仅会局部刷新销售订单行列表,不会触发全页重载,滚动位置保持不变,同时插入的是完全空白的新行。
内容的提问来源于stack exchange,提问作者BerDev
相关产品推荐
相关产品推荐

