Odoo class 差异

Odoo class differences

创建class时有时使用osv.osv,我们也使用models.Model 这两者之间的基本区别是什么? 有什么优势吗?

前面的API使用了osv.osv。 它已被弃用。它仍然有效,但应该避免。

随着新的API应该使用models.Model

版本 7 之前,

osv 是一个 class 和一个 OpenERP 描述符 class 并且所有 class(模型)必须继承它以进行 OpenERP 模块部署。

osv class 在 OpenERP 服务器的 OSV 模块中,其中包含所有 OpenERP 属性,你可以看到 _column,_defaults 和其他许多东西,比如 nameetc 所以我们必须继承我们的openerp 模型 (class)

在版本 7 中,

ORM,对象关系映射的缩写,是 OpenERP 的核心部分。

在OpenERP中,数据模型是通过Python classes和对象来描述和操作的。 ORM 的工作是弥合 Python 和底层关系数据库 (PostgreSQL) 之间的差距——对开发人员来说尽可能透明,这将为我们的对象提供所需的持久性。

osv.osvorm.Model 已弃用,它仍然适用于向后兼容。您应该改用 models.Model

在版本 8+ 中,

模型转换为

osv.osv ---> orm.Model ---> models.Model

osv.TransientModel ---> orm.TransientModel ---> models.TransientModel