用途:在 Odoo Online(SaaS)等托管实例上开发可导入(data-only)的 Odoo 模块。此类实例不允许任意 Python 代码,一切原本由 Python 类、方法、字段定义承担的内容都须改写为 XML 数据记录;JavaScript 文件可用。
主要能力:以 ir.model、ir.model.fields 记录定义模型与字段(char、integer、float、boolean、date、datetime、html、text、many2one、many2many、one2many、selection、binary 等 ttype),支持 required、readonly、index、copied、translate 等属性;用 ir.default 定义静态默认值;用 depends/compute 沙箱 CDATA 写存储计算字段(沙箱提供 datetime、dateutil、time 及内建函数,无导入、无 OS 访问、无 print,须用 self['x_field']=v 赋值);用 related 定义关联字段;用 ir.actions.server 代码型服务动作承接业务逻辑,可绑定按钮或齿轮菜单,也可经 inherit_id + xpath 替换标准模块按钮类型,或用 base.automation 自动化规则响应生命周期事件;安装 website 后可让服务动作充当 HTTP 端点;支持 OWL/JS 资源与 web_tour.tour 引导。
命名与结构:自定义模型须加 x_ 前缀且只用下划线(如 x_my_model),自定义字段须加 x_ 前缀。目录含 actions、models、security、views、static/src/js,init.py 为空,manifest.py 中 data 按依赖顺序列出(模型先于视图)。
部署:UI 方式为打包 zip 后在 Apps → Import Module 导入(需开发者模式并安装 base_import_module),可选 Force init 与导入演示数据;CLI 方式:odoo-bin deploy <path_to_module> https://<instance> --login <user> --password <pass> [--force]。部署用户需 Administration/Settings 权限。
限制:不允许自定义 Python 类/方法、导入 Python 库、动态默认值(如“today”)、沙箱内任意 OS/文件访问与 print();资产不支持 glob 通配;字段首次部署后不支持改类型;模型需公开用户可读否则返回 403。资料提出“逻辑预算”概念:以记录表达的开发工时按 10 小时计(除非另有说明),超出或需绕行实现时应先与用户确认是否改用 Odoo.sh。