Odoo 遵循多层架构,这意味着表现层、业务逻辑层和数据存储层是分开的。更具体地说,它采用了三层架构:
表现层是 HTML5、JavaScript 和 CSS 的组合。逻辑层完全用 Python 编写,而数据层仅支持 PostgreSQL 作为关系数据库管理系统(RDBMS)。
根据你的模块范围,Odoo 开发可以在这些层中的任何一个进行。因此,在进一步操作之前,如果你对这些主题不是很熟悉,最好回顾一下知识。
为了进行这个教程,你需要具备 HTML 的基本知识和 Python 的中级知识。
Odoo 模块
服务器和客户端扩展都被打包为模块,这些模块可以选择性地加载到数据库中。一个模块是一组旨在单一目的上的函数和数据的集合。
Odoo 模块可以添加全新的业务逻辑到 Odoo 系统,或修改和扩展现有的业务逻辑。
在 Odoo 中,一切都始于模块并以模块结束。
术语:开发者将他们的业务功能分组到 Odoo 模块中。主要面向用户的模块被标记并暴露为应用程序,但大多数模块不是应用程序。模块也可以被称为插件,Odoo 服务器找到它们的目录形成了 addons_path。(不是所有模块都是app,而app都是模块,如果不理解也没关系,后面的教程会讲到)
模块的组成
一个 Odoo 模块可以包含多个元素:
业务对象
业务对象(例如,一个发票)被声明为一个 Python 类。这些类中定义的字段会自动映射到数据库列,感谢 ORM 层。
对象视图
定义 UI 显示
数据文件
声明模型数据的 XML 或 CSV 文件:
- 视图或报告,
- 配置数据(模块参数化、安全规则),
- 演示数据
- 等等
网页控制器
处理来自网页浏览器的请求
静态网页数据
由网页界面或网站使用的图像、CSS 或 JavaScript 文件
这些元素都不是必须的。一些模块可能只添加数据文件(例如,特定国家的会计配置),而其他模块可能只添加业务对象。在这次培训中,我们将创建业务对象、对象视图和数据文件。
模块结构
每个模块都是模块目录中的一个目录。使用 --addons-path 选项来指定模块目录。
一个 Odoo 模块由其清单声明。
当一个 Odoo 模块包含业务对象(即 Python 文件)时,它们被组织为一个带有 init.py 文件的 Python 包。此文件包含对模块中各种 Python 文件的导入指令。
这是一个简化的模块目录:
module
├── models
│ ├── *.py
│ └── __init__.py
├── data
│ └── *.xml
├── __init__.py
└── __manifest__.py
Odoo 版本
Odoo 提供两个版本:Odoo 企业版(许可 & 共享源代码收钱)和 Odoo 社区版(开源免费)。