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

咨询:点击Odoo treeView中“add a line”按钮触发的方法

Odoo树形视图(Tree View)点击“添加行”按钮的调用方法解析

前端触发逻辑

  • 普通独立树形视图:点击“添加行”按钮时,前端核心调用Odoo Web框架中web.ListController类的_onAddRecord方法。该方法会先在前端创建一条空本地记录,待用户填写字段并触发保存后,才向后端发起请求。
  • 关联字段内嵌树形视图(如One2many字段的子视图):此时触发web.One2manyField控制器下的_addRecord方法,该方法会处理关联记录的创建逻辑,通常携带主记录的关联ID,确保子记录与主记录绑定。

无论哪种场景,前端准备好记录数据后,最终都会调用_createRecord方法发起后端请求。

后端处理方法

  • 前端请求最终会落到对应模型的create方法上。独立树形视图直接调用当前模型的create;One2many内嵌视图则调用子模型的create方法,并传入主记录的关联字段值(如parent_id)。
  • 若需自定义创建行为,可直接重写模型的create方法,示例如下:
class MyModel(models.Model):
    _name = 'my.model'

    def create(self, vals):
        # 添加自定义逻辑,比如设置默认值
        vals.setdefault('status', 'draft')
        return super(MyModel, self).create(vals)

自定义前端行为示例

如果需要修改点击“添加行”时的前端逻辑,可通过继承并重写ListController的_onAddRecord方法实现:

odoo.define('custom_module.custom_list_controller', function(require) {
    'use strict';

    const ListController = require('web.ListController');

    ListController.include({
        _onAddRecord: function () {
            // 自定义操作,比如添加日志或预设字段值
            console.log('触发添加行操作');
            // 调用原方法保留默认行为
            this._super(...arguments);
        }
    });

    return ListController;
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 02:57:41