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

如何通过Odoo JS实现点击产品打开并填充产品表单视图

解决Odoo点击产品打开表单但无法填充字段的问题

看起来你已经搞定了打开表单视图的部分,但字段自动填充没生效对吧?核心问题是你的代码里没告诉Odoo要把哪些数据塞进表单里,我给你两种场景的解决方案,你按需选:

场景1:打开现有产品的表单(直接展示该产品的所有字段)

如果点击的是已有产品,你只需要在do_action里指定该产品的res_id,Odoo就会自动加载对应记录的所有字段,不需要手动填。修正后的代码如下:

selected_item: function(e){
    e.preventDefault();
    // 从点击元素的data属性获取产品ID
    const productId = $(e.currentTarget).data('id');
    
    return this.do_action({
        type: 'ir.actions.act_window',
        res_model: 'product.product',
        res_id: productId, // 关键:指定要打开的产品记录ID
        view_type: 'form',
        view_mode: 'form',
        target: 'current', // 可选:'current'替换当前视图,'new'打开新窗口
        flags: {
            form: {
                options: {'mode': 'view'} // 可选:'view'只读,'edit'默认可编辑
            }
        }
    });
}

场景2:新建产品并预填充字段

如果是要基于点击的产品数据新建一条记录,那得通过context传递default_前缀的字段值,告诉Odoo预填充哪些内容。这里需要先读取原产品的字段数据,再传递给新表单:

selected_item: function(e){
    e.preventDefault();
    const productId = $(e.currentTarget).data('id');
    
    // 先调用后端获取原产品的字段数据(按需指定你要填充的字段)
    this._rpc({
        model: 'product.product',
        method: 'read',
        args: [[productId], ['name', 'default_code', 'list_price', 'categ_id']],
    }).then(productData => {
        return this.do_action({
            type: 'ir.actions.act_window',
            res_model: 'product.product',
            view_type: 'form',
            view_mode: 'form',
            target: 'new',
            context: {
                // 用default_+字段名的格式传递预填充值
                default_name: productData[0].name,
                default_default_code: productData[0].default_code,
                default_list_price: productData[0].list_price,
                default_categ_id: productData[0].categ_id,
                // 其他需要填充的字段同理添加
            },
        });
    });
}

为啥原代码没生效?

你的原始代码只告诉Odoo要打开product.product的表单,但没指定要加载哪条现有记录,也没传递新建时要预填充的字段值,所以Odoo只能打开一个空白的新建表单,自然不会自动填充任何内容。

另外要注意:确保你点击的元素上确实正确绑定了data-id属性,且值是有效的产品ID;如果用_rpc读取数据,要确认你有权限访问该产品记录,以及指定的字段名和product.product模型的字段完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:58:53