是否可以从 Odoo 的 JS 代码中获取 xml_id?

Is it possible to get the xml_id from JS code in Odoo?

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

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

现在,我们可以对 Menus 应用过滤器来获取菜单项,例如,查找其名称,但问题是有很多菜单项具有相同的名称。所以我认为唯一标识我的菜单项并将其与其他菜单项区分开来的属性是 XML ID。

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

好吧,我找到了解决方法。可能有更好的解决办法,既然如此,请post吧。

在数据库中,有一个名为 ir_model_data 的 table。此 table 将 XML 个 ID 存储在列 name 下。 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);
   }
});