构建符合规范的 Odoo 自定义模块

解决 Odoo 开发痛点:通过设定专家规范,让 AI 自动生成标准的 __manifest__.py 配置、模型文件及视图 XML,并指导你使用正确的继承模式和命名空间,避免直接修改核心文件。

为什么需要这个技能

Odoo 的模块开发有一套严格的约定。无论是新建业务模块,还是为 sale.order 等核心模型添加字段,初学者很容易写出语法错误、忽略权限配置或命名不规范。

本技能让 AI 扮演资深 Odoo 开发者角色,自动规划文件夹结构,确保模型命名包含命名空间(如 hospital.patient),正确设置版本号,并指导使用 mail.thread 继承来自动获取聊天和日志功能,从源头避免常见陷阱。

适用场景

  • 从零开始开发一个全新的业务模块(如医院管理系统)。
  • 需要为现有模型添加字段或重写方法,但不确定如何安全继承。
  • 解决模块安装报错、权限不足或访问错误等问题。
  • 检查现有代码是否符合 Odoo 社区版 (CE) 或企业版 (EE) 的最佳实践。

核心工作流

  1. 激活技能并定义需求:提及 @odoo-module-developer 并描述模块功能。
  2. 生成骨架结构:AI 输出包含 __manifest__.pymodels/views/security/ 目录的标准结构。
  3. 编写核心代码:生成符合规范的模型代码,包含正确的 _name_inherit 及字段定义。
  4. 配置权限与依赖:自动列出依赖包 (depends) 并生成 ir.model.access.csv 确保基础权限。

代码示例

以下是一个名为 hospital_management 的模块骨架示例,展示了如何创建患者模型:

生成的文件夹结构:

hospital_management/
├── __manifest__.py
├── __init__.py
├── models/
│   ├── __init__.py
│   └── hospital_patient.py
├── views/
│   └── hospital_patient_views.xml
├── security/
│   ├── ir.model.access.csv
│   └── security.xml
└── data/

__manifest__.py 配置:

{
    'name': 'Hospital Management',
    'version': '17.0.1.0.0',
    'category': 'Healthcare',
    'depends': ['base', 'mail'],
    'data': [
        'security/ir.model.access.csv',
        'views/hospital_patient_views.xml',
    ],
    'installable': True,
    'license': 'LGPL-3',
}

models/hospital_patient.py 模型代码:

from odoo import models, fields, api

class HospitalPatient(models.Model):
    _name = 'hospital.patient'
    _description = 'Hospital Patient'
    _inherit = ['mail.thread', 'mail.activity.mixin']

    name = fields.Char(string='Patient Name', required=True, tracking=True)
    birth_date = fields.Date(string='Birth Date')
    doctor_id = fields.Many2one('res.users', string='Assigned Doctor')
    state = fields.Selection([
        ('draft', 'New'),
        ('confirmed', 'Confirmed'),
        ('done', 'Done'),
    ], default='draft', tracking=True)

最佳实践提示

  • ✅ 务必在 _name 前加上命名空间(如 hospital.patient)。
  • ✅ 使用 _inherit = ['mail.thread'] 自动启用 chatter。
  • ✅ 版本号格式必须为 {odoo_version}.{major}.{minor}.{patch}
  • ✅ 在 __manifest__.py 中设置 author 以便在应用中识别。
  • ❌ 严禁直接修改 Odoo 核心文件,始终使用继承。
  • ❌ 忘记更新 ir.model.access.csv 会导致权限错误。
  • ❌ 文件夹命名严禁使用空格或大写字母,必须使用 snake_case。

下载和安装

下载 odoo-module-developer 中文版 Skill ZIP

你可能还需要

暂无推荐