OpenERP开发中self.browse()和self.pool.get()之间有什么区别?

时间:2013-08-26 05:27:42

标签: python odoo

我一直致力于在OpenERP 7.0中开发模块。我一直在使用Python和Eclipse IDE进行开发。我想知道OpenERP开发中self.browse()self.pool.get()之间的区别。

感谢。

2 个答案:

答案 0 :(得分:16)

要按ID访问记录,您需要使用ORM的浏览方法

def some_moethod(self, cr, uid, ids):
    self.browse(cr, uid, ids) // same class
    do_some_Stuff
    return something

您可以在同一个类中编写一个方法,当您想要浏览其记录时,但是如果您想要浏览另一个类的记录,在这种情况下,您首先需要使用self.pool.get创建该类的实例(' another.class')然后你可以浏览它

例如:

def some_moethod(self, cr, uid, ids):
    self.pool.get('another.class').browse(cr, uid, ids)
    do_some_Stuff
    return something

`

答案 1 :(得分:7)

self.pool.get用于从正在使用的数据库的注册表池中获取orm模型的Singleton实例。 self.browse是orm模型返回浏览记录的方法。

作为一个粗略的类比,将self.pool.get视为获取数据库游标,并将self.browse视为Id的记录的sql选择。请注意,如果您传递一个浏览整数,则会获得单个浏览记录,如果您传递一个ID列表,则会获得一个浏览记录列表。