【问题标题】:Is it possible to get the xml_id from JS code in Odoo?是否可以从 Odoo 中的 JS 代码中获取 xml_id?
【发布时间】:2026-02-16 23:35:01
【问题描述】:

我正在尝试获取特定的菜单项并将其存储在 JavaScript 中的变量中:

var Menus = new openerp.web.Model('ir.ui.menu');

现在,我们可以对Menus 应用过滤器来获取菜单项,例如,查找它的名称,但问题是有很多同名的菜单项。所以我认为唯一能识别我的 menuitem 并将它与另一个区别的属性是 XML ID。

但我不知道如何从 JavaScript 代码中获取它。是否有任何内置函数来获取它?如何管理我的目标?

【问题讨论】:

    标签: javascript openerp odoo-8


    【解决方案1】:

    好吧,我找到了解决方法。可能有更好的解决方案,在这种情况下,请发布它。

    在数据库中,有一个名为ir_model_data 的表。此表在 name 列下存储 XML ID。 modelres_id 列指示您存储该 XML ID 记录的模型及其 ID。还有一个名为 module 的列,可用于将其放在提取的 XML ID 之前(列 name),以获取 module_name.xml_id 表示法。

    例如:

    我有一条来自ir.ui.menu 模型的记录,ID 为 303,我想从 Javascript 中获取它的 XML ID:

    var Menus = new openerp.web.Model('ir.model.data');
    Menus.query(['name']).filter(['&', ['model', '=', 'ir.ui.menu'], ['res_id', '=', 303]]).all().then(function(ir_model_datas) {
       for (i in ir_model_datas) {
          console.log(ir_model_datas[i].name);
       }
    });
    

    【讨论】: