2011-12-29 29 views
6

osv.osvは、get_xml_idメソッドを提供して、提供されたデータベースIDのXML IDを検索します。 その逆を行う最善の方法は何ですか?XML IDからデータベースIDを取得する方法

XML ID(データ読み込みファイルで定義されています)を知っているので、対応するデータベースIDを取得するにはどうすればよいのですか?ツアーのPythonコードで参照できますか?

答えて

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] 
+1

感謝。 self.pool.get( 'ir.model.data')。get_object(cr、uid、 'hr_timesheet'、 'analytic_journal')。id –

10

ir.model.dataモデルは、モデル名とxml_id与えられた閲覧可能なレコードを返すget_object()方法があります。

ので、別の解決策は次のようになります。

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

もっと洗練されたソリューションです。ありがとうございました。 – Yajo

関連する問題