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

时间:2016-05-25 07:48:19

标签: javascript openerp odoo-8

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

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

现在,我们可以对Menus应用过滤器来获取menuitem,例如查找其名称,但事实是有很多具有相同名称的menuitems。所以我认为唯一标识我的menuitem的属性和它与另一个的区别是XML ID。

但我不知道如何从JavaScript代码中获取它。有没有建立的功能来获得它?我该如何管理我的目的?

1 个答案:

答案 0 :(得分:0)

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

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

例如:

我有一个ID为303的ir.ui.menu模型的记录,我想从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);
   }
});