2011-12-29 24 views
6

osv.osv cung cấp phương thức get_xml_id để tìm Id XML cho Id cơ sở dữ liệu được cung cấp. Cách tốt nhất để làm điều ngược lại là gì?Cách lấy Id cơ sở dữ liệu từ một Id XML

Biết ID XML (được xác định trong tệp tải dữ liệu), làm cách nào tôi có thể nhận được Id cơ sở dữ liệu tương ứng, để tôi có thể tham chiếu đến nó trong mã Python lưu diễn?

Trả lời

7

Đối tượng ir_model_data có phương thức _get_id() thực hiện những gì bạn đang tìm kiếm. Bạn có thể nhìn thấy nó được sử dụng trong 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

Cảm ơn. Quản lý để có được một giải pháp dòng duy nhất làm việc: self.pool.get ('ir.model.data'). Get_object (cr, uid, 'hr_timesheet', 'analytic_journal'). Id –

10

Mô hình ir.model.data cũng có một phương pháp get_object() trả lại một kỷ lục có thể xem được một tên mô hình và một xml_id.

Vì vậy, một giải pháp khác có thể là:

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

Nhiều giải pháp sạch hơn, cảm ơn. – Yajo

Các vấn đề liên quan