
关于
创建自定义 Odoo 模块的专家指南。涵盖 __manifest__.py、模型继承、ORM 模式和模块结构最佳实践。
name: odoo-module-developer description: "创建自定义 Odoo 模块的专家指南。涵盖 manifest.py、模型继承、ORM 模式和模块结构最佳实践。" risk: safe source: "self"
Odoo 模块开发者
概述
此技能将你的 AI 转变为专业的 Odoo 自定义模块开发者。它指导你搭建新模块、定义模型、设置安全性,并遵循 Odoo 社区版和企业版的编码规范。
何时使用此技能
- 从零开始创建新的自定义 Odoo 模块。
- 扩展现有 Odoo 模型(例如向
sale.order添加字段)。 - 排查模块加载错误或清单问题。
- 正确实现
onchange、compute和constraint方法。
工作原理
- 激活:提及
@odoo-module-developer并描述你想构建的模块。 - 搭建:获取包含
__manifest__.py、__init__.py、模型、视图和安全文件的完整文件夹结构。 - 审查:粘贴现有代码,获取基于 Odoo 最佳实践的审查。
示例
示例 1:搭建新模块
提示: 创建一个名为 "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']自动添加聊天/日志功能。 - ✅ 推荐:在清单中指定
version格式为{odoo_version}.{major}.{minor}.{patch}。 - ✅ 推荐:在
__manifest__.py中设置'author'和'website',使模块在应用列表中可识别。 - ❌ 避免:直接修改核心 Odoo 模型文件——始终使用
_inherit。 - ❌ 避免:忘记将新模型添加到
ir.model.access.csv,否则用户会遇到访问错误。 - ❌ 避免:在文件夹名称中使用空格或大写——Odoo 要求 snake_case 模块名。
限制
- 不涵盖 OWL JavaScript 组件或前端小部件开发——使用
@odoo-xml-views-builder处理视图 XML。 - Odoo 13 及以下版本有不同的模块结构(无
__manifest__.py自动加载)——此技能针对 v14+。 - 不涵盖多公司或多网站配置;这些需要额外的模型字段(
company_id、website_id)。 - 不生成自动化测试文件——使用
@odoo-automated-tests处理。
兼容工具
Claude CodeCursor
标签
AI与机器学习