osv.osv
提供get_xml_id
方法来查找提供的数据库ID的XML ID。
做相反的最佳方法是什么?
知道XML Id(它是在数据加载文件中定义的),我如何获得相应的Database Id,以便我可以在tour Python代码中引用它?
答案 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]