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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 11:54:05