05. 创建应用模块
本章将介绍如何从零开始创建一个全新的 Odoo 模块,并了解 Odoo 识别模块所需的最低配置有哪些?在接下来的章节中,我们将逐步扩展功能,直到完成构建一个接近于真实的商业应用模块。
创建模块
新建模块应该是一个具体应用业务管理模块,而且未包含在标准模块中。通常在开发新模块之前,应先确认Odoo是否已提供了解决该特定业务场景的方案,这是良好的开发实践。 新建模块效果如下所示:

准备模块目录
目标:本节的目标是让 Odoo 识别新创建的模块,尽管模块目前还是一个空壳,但它可以显示在“应用”列表中,并且能够安装(启用)。
创建模块的第一步是创建其目录。在 dev-addons 目录下,添加一个名为 estate 的新目录。如目录:d:\odoo\odoo19\dev-addons\estate
一个模块必须至少包含 2 个文件:__manifest.py 文件和 __init.py 文件。__init.py文件目前可以保持为空,我们将在下一章中再回来处理它。__manifest.py文件需要描述模块,不能留空。其唯一必填字段是名称,但通常会包含更多信息。
除了提供模块的描述(名称、类别、摘要、网站等)外,它还列出了其依赖项(depends)。所谓依赖,是指 Odoo 框架会确保在安装本模块之前,先安装这些模块。此外,如果其中某个依赖项被卸载,那么本模块以及所有依赖于它的其他模块也将被卸载。
新建 estate 应用的目录结构如下:
estate
├── models
│ ├── *.py
│ └── __init__.py
├── data
│ └── *.xml
├── __init__.py
└── __manifest__.py首先,创建以下文件夹和文件:
/estate/__init__.py
/estate/__manifest__.py__manifest.py文件只需定义模块的名称及其依赖项,其内容如下:
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
{
'name': 'Estate',
'version': '1.0',
'category': 'Sales/Estate', # 此应用属于哪个分类下
'sequence': 15, # 排序值
'summary': '一个学习 Odoo 开发的模块示例',
'website': 'https://www.winodoo.com/dev-guide/new-module.html',
'depends': [ # 所依赖的模块
'base',
],
'data': [
# 这里暂空,后续按学习知识点逐渐增加
],
'demo': [
],
'installable': True,
'application': True,
'assets': {
},
'author': 'Winodoo',
#'icon': '/estate/static/images/icon.png',
'license': 'LGPL-3', # 遵循官方分发协议
}将上面内容编辑好后保存。重启 Odoo 服务器,执行以下命令:
.\venv\Scripts\python.exe odoo-bin.py `
--db_host 127.0.0.1 --db_port=5432 -r userodoo `
-w 123456 -d odoodb --addons-path=addons -u estate `
--limit-time-real=120000或者,使用 bat 脚本:
.\venv\Scripts\python.exe odoo-bin.py ^
--db_host 127.0.0.1 --db_port=5432 -r userodoo ^
-w 123456 -d odoodb --addons-path=addons -u estate ^
--limit-time-real=120000运行结果如下:
2026-05-01 01:39:42,919 21888 INFO doodb odoo.modules.loading: loading 15 modules...
2026-05-01 01:39:42,919 21888 INFO doodb odoo.modules.loading: Loading module estate (15/15)
2026-05-01 01:39:43,111 21888 INFO doodb odoo.addons.base.models.ir_module: module estate: no translation for language zh_CN
2026-05-01 01:39:43,159 21888 INFO doodb odoo.modules.loading: Module estate loaded in 0.24s, 10 queries (+10 other)
2026-05-01 01:39:43,159 21888 INFO doodb odoo.modules.loading: 15 modules loaded in 0.24s, 10 queries (+10 extra)
2026-05-01 01:39:49,000 21888 INFO doodb odoo.modules.loading: Modules loaded.
2026-05-01 01:39:49,103 21888 INFO doodb odoo.registry: Registry changed, signaling through the database
2026-05-01 01:39:49,158 21888 INFO doodb odoo.registry: Registry loaded in 31.301s然后进入“应用”页面。点击“更新应用列表”,搜索关键字:estate,可以看到创建的新模块,如下图所示:

注: 请确保已启用 开发者模式 。否则,将有可能看不到“更新应用列表”中该应用的启用按钮。可通过:设置 -> 一般设置 -> 开发者工具 -> 激活开发者模式 来启用。
从上面图中可以看到,estate 是可以安装的,但它还只是个空壳,什么也没有,因此不会显示任何 estate 有关的菜单。