Odoo 遵循多层架构,这意味着表示、业务逻辑和数据存储是分离的。更具体地说,它使用三层架构:

表示层是 HTML5、JavaScript 和 CSS 的组合。逻辑层完全用Python编写,而数据层仅支持PostgreSQL作为RDBMS。

根据模块的范围,Odoo 开发可以在任何这些层中完成。因此,如果您在这些主题上没有达到中级水平,那么在继续之前,最好先回顾一下您的记忆。

为了完成本教程,您需要具备非常基础的 HTML 知识和中等水平的 Python 知识。高级主题将需要更多其他主题的知识。有很多免费教程,因此我们无法推荐其中一个,因为这取决于您的背景。

 注解

自 15.0 版本以来,Odoo 正在积极过渡到使用自己内部开发的OWL 框架作为其表示层的一部分。旧版 JavaScript 框架仍然受支持,但随着时间的推移将被弃用。这将在高级主题中进一步讨论。

Odoo 模块

服务器和客户端扩展都打包为模块,可以选择将其加载到数据库中。模块是针对单一目的的功能和数据的集合。

Odoo 模块可以向 Odoo 系统添加全新的业务逻辑,也可以更改和扩展现有的业务逻辑。可以创建一个模块来将您所在国家/地区的会计规则添加到 Odoo 的通用会计支持中,而另一个模块可以添加对公交车队实时可视化的支持。

Odoo 中的一切都以模块开始和结束。

术语:开发人员将其业务功能分组到 Odoo模块中。主要面向用户的模块被标记并公开为Apps,但大多数模块不是 Apps 。模块 也可以称为插件和 Odoo 服务器从addons_path.

模块的组成

Odoo 模块可以包含许多元素:

业务对象

业务对象(例如发票)被声明为 Python 类。由于 ORM层,这些类中定义的字段会自动映射到数据库列。

对象视图

定义 UI 显示

数据文件

声明模型数据的 XML 或 CSV 文件:

  • 意见或报告,
  • 配置数据(模块参数化、安全规则),
  • 演示数据
  • 和更多

网络控制器

处理来自网络浏览器的请求

静态网页数据

Web 界面或网站使用的图像、CSS 或 JavaScript 文件

这些要素都不是强制性的。一些模块可能仅添加数据文件(例如,特定于国家/地区的会计配置),而其他模块可能仅添加业务对象。在本次培训中,我们将创建业务对象、对象视图和数据文件。

模块结构

每个模块都是模块目录中的一个目录。模块目录是使用该--addons-path 选项指定的。

Odoo 模块由其清单声明。

当 Odoo 模块包含业务对象(即 Python 文件)时,它们将被组织为 带有文件的Python 包__init__.py。该文件包含模块中各种Python文件的导入指令。

这是一个简化的模块目录:

module
├── models
│   ├── *.py
│   └── __init__.py
├── data
│   └── *.xml
├── __init__.py
└── __manifest__.py

Odoo 版本

Odoo 有两个版本:Odoo Enterprise(许可和共享源)和 Odoo Community(开源)。除了支持或升级等服务外,企业版还为 Odoo 提供额外的功能。从技术角度来看,这些功能只是在社区版本提供的模块之上安装的新模块。

准备开始?在编写实际代码之前,我们先进入下一章回顾一下Odoo的安装过程。即使 Odoo 已经在您的系统上运行,我们也强烈建议您阅读本章,以确保我们在新应用程序的开发过程中从同一页面开始。