创建类时有时使用 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.osv
和 orm.Model
已弃用,但仍可用于向后兼容。您应该改用 models.Model
。
在版本 8+ 中,
模型转换是osv.osv
---> orm.Model
---> models.Model
osv.TransientModel
---> orm.TransientModel
---> models.TransientModel