跳至内容

老赵解读Odoo 18开发教程02:创建新应用

2026年8月15日
老赵解读Odoo 18开发教程02:创建新应用

原文:Odoo 18 官方开发教程“Server framework 101”第 2 章。本文尽量保留原文结构、代码、练习与图片,仅进行中文翻译,并在文末增加“老赵解读”。

第 2 章:新应用程序


本章的目的是为创建全新的 Odoo 模块奠定基础。
我们将从头开始,从 Odoo 识别我们的模块所需的最低限度开始。
在接下来的章节中,我们将逐步添加功能来构建现实的业务案例。

房地产广告模块

我们的新模块将涵盖一个非常具体的业务领域,因此不包含在
标准模块集:房地产。值得注意的是,之前
开发一个新模块时,最好验证 Odoo 是否已经提供了一种方法
回答具体的业务案例。

以下是包含一些广告的主列表视图的概述:

List view 01

表单视图的顶部区域总结了房产的重要信息,例如名称、
房产类型、邮政编码等。第一个选项卡包含描述信息
房产:卧室、起居区、车库、花园……

Form view 01

第二个选项卡列出了房产的报价。我们可以在这里看到潜在买家可以
报价高于或低于预期售价。由卖家决定是否接受报价。

Form view 02

这是一个显示该模块工作流程的快速视频。

希望这个视频很快就会被录制:-)

准备附加模块目录

参考:与该主题相关的文档可以在以下位置找到
模块清单

说明

目标:本节的目标是让 Odoo 识别我们的新模块,这将
暂时是个空壳。它将在应用程序中列出:

The new module appears in the list

创建模块的第一步是创建其目录。在 tutorials
目录,添加一个新目录 estate

模块必须至少包含 2 个文件:__manifest__.py 文件和 __init__.py 文件。
__init__.py 文件现在可以保持为空,我们将在下一章中讨论它。
另一方面,__manifest__.py 文件必须描述我们的模块并且不能保留为空。
它唯一需要的字段是 name,但它通常包含更多信息。

看看
CRM 模块清单文件
举个例子。除了提供模块的描述(namecategory
summarywebsite…),它列出了其依赖项(depends)。依赖性意味着
Odoo 框架将确保在安装我们的模块之前安装这些模块。此外,如果
卸载这些依赖项之一,然后我们的模块和 任何其他依赖于它的东西也将
被卸载
。想想你最喜欢的 Linux 发行版包管理器
aptdnfpacman…):Odoo 的工作方式相同。

练习

创建所需的附加模块文件。

创建以下文件夹和文件:

  • /home/$USER/src/tutorials/estate/__init__.py
  • /home/$USER/src/tutorials/estate/__manifest__.py

__manifest__.py 文件应该只定义模块的名称和依赖项。
目前唯一必需的框架模块是 base

重新启动 Odoo 服务器并转到“应用程序”。单击“更新应用程序列表”,搜索 estate 并…
tadaaa,你的模块出现了!没有出现吗?也许尝试删除默认的“应用程序”过滤器;-)

警告

请记住启用 开发者模式,如前面所述
章。你不会看到 更新应用程序列表 按钮,否则。

练习

让你的模块成为一个“应用程序”。

将适当的配置项添加到您的 __manifest__.py 中,以便该模块在“应用程序”时出现
过滤器已打开。

您甚至可以安装该模块!但显然它是一个空壳,所以不会出现任何菜单。

一切都好吗?如果是,那么让我们创建我们的第一个模型

老赵解读

这一章看似只创建了两个文件,实际上是在建立 Odoo 模块的最小边界。__manifest__.py 不只是模块说明书,也是依赖安装、升级和卸载传播的入口;依赖关系一旦写错,后续所有功能都会建立在不稳定的地基上。

实际开发时,我建议先让空模块能够被识别和安装,再逐步加入模型、权限和视图。每增加一层就升级并验证一次,比一次性堆完所有文件后再排错更高效。

老赵解读Odoo 18开发教程01:架构概览