模型和 Python 类
Odoo 模型以 Python 类的形式展现,在前面的代码中,有一个继承了 models.Model 类的Python 类: Book,创建了新 Odoo 模型: library.book。 Odoo 的模型保存在中央注册表
(central registry)中,可通过 env 环境对象(老 API 中称为 pool)获取。 它是一个数据库保存所有可用模型类引用的字典,其中的词条可通过模型名引用 。具体来说,模型方法中的代码可使用self.env[‘library.book’ ]来获取表示 library.book 模型的模型类。
可以看出模型名非常重要,因为它是访问该注册表的关键。模型名的规则是以点号连接的小写单词,如 library.book 或 library.book.category。内核模块中的其它示例有 project.project,project.task 和 project.task.type。模型名应使用单数,如 library.book 而非 library.books。
“ 小贴士: 由于历史原因,有些内核模型没有遵循这一规则,如 res.users。 ”模型名必须全局唯一,因此第一个单词应使用模块关联的主应用对应,以图书应用而言,模型名前缀使用 library。其它示例如内核模块的 project, crm 和 sale。另一方面 Python 类仅为所声明文件本地内容,名称仅需在代码文件中唯一即可。因为类名不会与其它模块中的类产生冲突,也
就不需为其添加主应用相关的前缀。
类的命名规范是使用驼峰命名法(CamelCase),这与 Python 标准的 PEP8 编码规范一致。
临时(Transient)模型和抽象模型
在前述代码中以及在大多数据 Odoo 模型中的类会继承 models.