6

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

知道 XML Id(在数据加载文件中定义),如何获取对应的 Database Id,以便在游览 Python 代码中引用它?

4

2 回答 2

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
于 2012-10-01T13:10:10.900 回答
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]
于 2012-01-04T00:02:06.833 回答