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

最佳答案

在第 7 版之前,
osv 是一个类和一个 OpenERP 描述符类,所有的类(模型)都必须继承它才能部署 OpenERP 模块。
osv 类位于 OpenERP 服务器的 OSV 模块中,它包含所有 OpenERP 属性,例如您可以看到 _column、_defaults 和其他许多内容,例如 nameetc,因此我们必须在我们的 openerp 模型(类)

在第 7 版中,

ORM 是 Object-Relational Mapping 的缩写,是 OpenERP 的核心部分。

在 OpenERP 中,数据模型是通过 Python 类和对象来描述和操作的。 ORM 的工作是弥合 Python 和底层关系数据库 (PostgreSQL) 之间的差距——对开发人员尽可能透明,这将为我们的对象提供我们需要的持久性。
osv.osvorm.Model 已弃用,但仍可用于向后兼容。您应该改用 models.Model

在版本 8+ 中,

模型转换是
osv.osv ---> orm.Model ---> models.Modelosv.TransientModel ---> orm.TransientModel ---> models.TransientModel

10-07 17:51