2011-12-29 12 views
6

Il osv.osv fornisce un metodo get_xml_id per trovare l'ID XML per l'ID del database fornito. Qual è il modo migliore per fare il contrario?Come ottenere l'ID del database da un ID XML

Conoscendo l'ID XML (è stato definito nel file di caricamento dei dati), come posso ottenere l'ID del database corrispondente, in modo che possa fare riferimento ad esso nel codice Python tour?

risposta

7

L'oggetto ir_model_data ha un metodo _get_id() che fa ciò che stai cercando. Lo si può vedere in uso in 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

Grazie. Gestito per ottenere una soluzione a linea singola funzionante: self.pool.get ('ir.model.data'). Get_object (cr, uid, 'hr_timesheet', 'analytic_journal'). Id –

10

Il modello ir.model.data ha anche un metodo get_object() tornare un record sfogliabile dato un nome del modello e un xml_id.

Quindi, un'altra soluzione potrebbe essere:

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

Soluzione molto più pulita, grazie. – Yajo

Problemi correlati