如何从XML Id获取数据库ID

时间:2011-12-29 10:39:26

标签: openerp

osv.osv提供get_xml_id方法来查找提供的数据库ID的XML ID。 做相反的最佳方法是什么?

知道XML Id(它是在数据加载文件中定义的),我如何获得相应的Database Id,以便我可以在tour Python代码中引用它?

2 个答案:

答案 0 :(得分:10)

ir.model.data模型还有get_object()方法,在给定模型名称和xml_id的情况下返回可浏览记录。

所以,另一个解决方案可能是:

    m  = self.pool.get('ir.model.data')
    id = m.get_object(cr, uid, 'base', 'user_root').id

答案 1 :(得分:7)

ir_model_data对象具有_get_id()方法,可以执行您要查找的内容。您可以在the res_users._get_admin_id() method中看到它正在使用中:

def _get_admin_id(self, cr):
    if self.__admin_ids.get(cr.dbname) is None:
        ir_model_data_obj = self.pool.get('ir.model.data')
        mdid = ir_model_data_obj._get_id(cr, 1, 'base', 'user_root')
        self.__admin_ids[cr.dbname] = ir_model_data_obj.read(cr, 1, [mdid], ['res_id'])[0]['res_id']
    return self.__admin_ids[cr.dbname]