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

Odoo 14前端JS如何获取当前记录ID?

获取Odoo表单保存后的记录ID

直接点击保存按钮是异步操作,而且this指向的是按钮DOM元素,自然拿不到记录ID。可以通过以下两种可靠方式获取:

方法一:监听表单保存完成事件(推荐)

利用Odoo表单控制器内置的saved事件,确保在保存完成后再获取ID:

// 获取表单控制器实例
const formController = $(".o_form_controller").data('web.FormController');

// 监听保存完成事件
formController.on('saved', null, () => {
    // 从模型中获取当前记录ID
    const record = formController.model.get(formController.handle);
    const recordId = record.res_id;
    console.log('当前记录ID:', recordId);
});

// 触发保存操作
$(".o_form_button_save").click();

方法二:延迟获取(不推荐,仅作备选)

如果临时需要快速测试,可以在点击保存后延迟执行获取逻辑,但这种方式依赖网络速度,稳定性差:

$(".o_form_button_save").click();

// 等待保存完成后获取ID,时间按需调整
setTimeout(() => {
    const formController = $(".o_form_controller").data('web.FormController');
    const recordId = formController.model.get(formController.handle).res_id;
    console.log('当前记录ID:', recordId);
}, 1500);

关键说明

Odoo的表单数据存在前端模型中,而非按钮元素里,所以不能通过按钮的this获取ID,必须从表单控制器关联的模型实例中读取res_id字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:40:30