如何从XML Id获取数据库ID

Dan*_*eis 6 openerp

osv.osv提供了一个get_xml_id寻找所提供的数据库ID的XML标识方法.做相反的最佳方法是什么?

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

Dan*_*eis 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
Run Code Online (Sandbox Code Playgroud)


Don*_*kby 7

ir_model_data对象有一个_get_id()方法可以满足您的需求.你可以看到它在使用res_users._get_admin_id()方法:

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]
Run Code Online (Sandbox Code Playgroud)