在python中使用self.browse进行openerp开发的目的是什么?
嗨,我一直在使用Python开发OpenERP模块。我一直在阅读一段源代码,但在理解它时遇到了问题。我不明白下面两行self.browse使用id、uid作为参数,然后使用带有函数的工具在python中使用self.browse进行openerp开发的目的是什么?,python,eclipse,openerp,Python,Eclipse,Openerp,嗨,我一直在使用Python开发OpenERP模块。我一直在阅读一段源代码,但在理解它时遇到了问题。我不明白下面两行self.browse使用id、uid作为参数,然后使用带有函数的工具 for obj in self.browse(cr, uid, ids, context=context): result[obj.id] = tools.image_get_resized_images(obj.image) 请告诉我一些关于这个的知识。谢谢 希望得到建议简单地说
for obj in self.browse(cr, uid, ids, context=context):
result[obj.id] = tools.image_get_resized_images(obj.image)
请告诉我一些关于这个的知识。谢谢
希望得到建议简单地说,
浏览
是启用对数据库表记录执行读取
操作的方法browse
方法将记录提取为对象,允许使用点符号浏览字段和关系。这使得OpenERP编程接近OOPs
OpenERP框架是使用ORM和MVC设计模式在Python编程中编写的。ORM将使用值包装在对象中,并允许在各种方法中使用CRUD操作方法,例如read
方法是browse
方法的替代方法,其中read返回dict的python列表,browse返回每个对象记录在数据库中的对象列表
因此,对代码的分析是:
self.browse(cr、uid、ids、context=context)中obj的此语句:
可以分为几行。
1.浏览(cr,uid,ids,context=context)从self(对象)获取记录(ID)。
2.因为这是通过上面的返回的循环。因此,每次循环iter时,它都会将记录存储在obj
中,这基本上是db记录,因为它是记录和对象,所以它会将tablet列值作为属性包装在侧边,因此您可以使用obj.field\u name获取字段值
希望这会有所帮助。正如Firebug的回答一样,您可以将浏览视为一个read语句,或者简单地说,是一个SQL select语句,但有一些区别。从技术上讲,它们表示由ORM模型定义的数据实例-product.product定义模型(或表),浏览记录是表中的一行数据 浏览获取单个ID(例如1)并返回浏览记录,或者获取ID列表
[1,2,3…]
并返回浏览记录列表
它最终会从数据库中读取数据,但它也会做一些其他读取所不做的事情
sale\u order\u line.sale\u order.partner.email
)product.ID
\uuuuueq\uuuuuu
,因此,如果产品浏览记录==其他产品浏览记录,则可以转到
100次中有99次这样做很好,但请注意,它将一次性读取所有数据库记录,并构建一个对象列表。如果您有一个庞大的id列表,您将使用一大块内存。表示该id是字段名还是什么。我对术语“id”@ArsalanSherwani非常困惑:yesid是表主键,也称为记录id,您在Ids param中接收到它。在OpenERP中,每个记录都有唯一的Id(PK),我们称之为Id,所以唯一标识任何reocrd的方法是记录Id。那么工具呢?它是一个内置函数还是什么?它是OpenERP提供的python包。在代码中输入“from openerp import tools”,您就可以了。请注意,tools是一个包,但它的init在中导入映像函数,以便您可以直接使用它们。我不喜欢这种风格,但事实就是这样。那么“图像大小调整图像”呢?它是工具包中的内置函数吗?不,不是内置函数。它是内存中工具包中image.py模块内的常规函数。