第九十九章 附录(速查与综合练习)

定位:全书 工具箱章;对应白皮书 附录 A~F(其中 F 为独立 Markdown 文件,便于随官方链接更新)。

关于章号:本分册正文 第五十章至第九十八章 未单独拆章速查表、对照表与术语 统一编入 第九十九章,便于印刷与 Pandoc 合并时 紧接第四十九章


本章学习目标

  • 能根据 ORM Changelog 制定 小版本升级检查项,并 自查代码中的废弃 API
  • 熟练使用 odoo-bin 常用子命令与参数 完成 开发、测试、Shell、升级 等日常任务。
  • 编写 前缀波兰式 domain,并 查阅文档确认 版本特有的 any / any! 等操作符。
  • 能为字段 选择合适 widget,并理解 字段类型与前端组件绑定关系
  • 掌握 核心术语 的中英文对照,能 阅读英文官方文档 不迷路。
  • 知道 教材章与官方 Tutorials / How-to / Reference对应入口附录 F)。

导读:附录不是「边角料」

附录在教材中承担 几件事迁移时对照(A)日常命令肌肉记忆(B)表达式与 UI 速查(C、D)术语统一(E)与官网章节映射(F)。建议 打印 C、D、E 三折页A、B升级周 贴在显示器旁;F浏览器书签与 PDF 分册 同存。权威细节始终以 Odoo 19.0 官方文档 为准


99.1 附录 A:Odoo 19 ORM Changelog 要点(摘要)

A.1 知识要点

  • 环境访问:废弃 record._cr / _uid / _context,统一 record.env.cr / env.user / env.context第二十七章、第四十四章)。
  • 显示名搜索_search_display_name新 API 与旧 name_search并存/迁移Changelog 为准
  • SQL 组合odoo.tools.SQL 参数化拼接第十五章)。
  • 字段命名:部分标准字段 *_id 后缀统一(如产品 UoM 等),自定义模块对齐官方命名
  • Web 路由type='json'type='jsonrpc'第三十六章)。
  • 装饰器@api.private 等新语义(第四章)。
  • 习惯每个大版本升级通读 Changelog 目录,再 对本仓库 grep 关键词

A.2 案例

自查清单(在副本分支执行):

rg "record\._cr|record\._uid|record\._context" custom_addons/
rg "type=['\"]json['\"]" custom_addons/

将命中行 列表化逐条改跑测试

A.3 截图占位

图 99-A ORM Changelog 网页整页

A.4 本节练习

  1. 实操:列出你项目中将受 ORM 变更 影响的 5 处 API文件:行 + 简述)。
  2. 判断name_search 在新版中 已完全移除。( )(以当前文档为准,多为过渡期并存
  3. 简答:为何 迁移 要先 读 Changelog跑 upgrade_code

参考答案提示:2. 通常为 「视子方法而定」——以文档为准。3. 工具不能覆盖语义变更


99.2 附录 B:CLI 命令速查

B.1 知识要点

  • 配置-c odoo.conf 指定配置;-d db 指定数据库。
  • 安装 / 升级-i module 首次安装-u module 升级执行迁移脚本)。
  • 测试--test-enable--stop-after-init 跑完测试即退出CI 常用)。
  • 标签--test-tags 过滤 at_install / post_install第二十九章)。
  • Shell./odoo-bin shell -c ... -d ... 交互 ORM
  • 演示数据--without-demo=all 禁用 demo生产、CI)。
  • 其他neutralize第四十三章)、i18n-export / i18n-import(以 odoo-bin --help 为准)。

B.2 表格(节选)

场景 命令示例
启动开发 ./odoo-bin -c odoo.conf -d devdb
安装模块 ./odoo-bin -c odoo.conf -d devdb -i my_module
升级模块 ./odoo-bin -c odoo.conf -d devdb -u my_module
测试后退出 ./odoo-bin -c odoo.conf -d testdb -i my_module --test-enable --stop-after-init
只跑部分标签 ./odoo-bin ... --test-tags post_install
Shell ./odoo-bin shell -c odoo.conf -d devdb
无 demo ./odoo-bin ... --without-demo=all

B.3 截图占位

图 99-B odoo-bin --help 终端输出

B.4 本节练习

  1. 实操:写出你日常最常用的 3 条 odoo-bin 参数组合解释用途
  2. 简答--without-demo=all 的用途?
  3. 判断-u自动 创建不存在的 数据库。( )

参考答案提示:3. 错。


99.3 附录 C:常用 Domain 操作符

C.1 知识要点

  • 前缀波兰式&|! 放在 操作数前二元运算符两个 条件。
  • 比较=!=<><=>=likeilikeinnot in
  • 关系child_ofparent_of版本差异见文档)。
  • 量化any / not any 用于 One2many/Many2many 子域语法以 19.0 文档为准)。
  • 新增操作符:如 any!务必查当前版本 Reference勿死记旧博客

C.2 表格(操作符节选)

操作符 含义
= / != 相等 / 不等
< / > / <= / >= 比较
like / ilike 模糊匹配(ilike 忽略大小写
in / not in 成员 / 非成员
child_of 层级(类别、部门 等)
any / not any 子记录存在性(语法查文档

C.3 案例

无负责人或负责人是我

['&', ('state', '=', 'draft'), '|', ('user_id', '=', False), ('user_id', '=', uid)]

uid 在规则中 常用 占位符代码里user.id。)

C.4 截图占位

图 99-C 开发者模式下「编辑域」可视化编辑器

C.5 本节练习

  1. 实操:用 domain 表达 「无负责人 OR 负责人是我」与上例对照)。
  2. 拓展:阅读文档确认 any!(若存在)在 目标版本语法与用例
  3. 简答:为何 复杂 domain 建议 抽成 @api.model 方法?(第四十五章

参考答案提示:3. 复用、测试、可读、防 XML 复制错误


99.4 附录 D:字段类型与 Widget 对照(示例)

D.1 知识要点

  • widget 绑定在视图 XML<field name="x" widget="..."/>未指定 则用 字段类型默认组件
  • 版本差异同一 widget 名大版本 可能 换实现OWL 化)。
  • 自定义Registry 注册字段组件第三十五章)。

D.2 表格(示例,非全量)

字段类型 常用 widget
selection statusbarradiopriority
many2many many2many_tagsmany2many_checkboxes
monetary monetary
float percentagetimesheet_uom视模块
binary imagepdf_viewer视版本
integer handle排序柄
char urlemailpassword
text 默认多行;Htmlhtml 类型

D.3 截图占位

图 99-D 同一模型在表单切换多种 widget 对比

D.4 本节练习

  1. 实操:在 自定义模块 中选 3 个字段 更换 widgetUI A/B截图images/
  2. 简答widget 与字段类型不匹配常见现象
  3. 判断所有 Float 都应使用 percentage widget。( )

参考答案提示:3. 错。


99.5 附录 E:术语表(节选)

E.1 知识要点

  • 统一术语 有利于 中英文文档对照、Code Review、客户沟通
  • 扩展:建议团队维护 私有术语表客户行业专名)。

E.2 对照表(节选)

英文 中文
Recordset 记录集
Environment (env) 环境
TransientModel 临时模型
AbstractModel 抽象模型
ACL (Access Control List) 访问控制列表
Record Rule 记录规则
QWeb 模板语言
OWL Odoo Web Library(组件框架)
Action 动作
XML ID / External ID 外部标识符
Manifest 模块清单(__manifest__.py
Cron 定时任务
Chatter 消息关注区(mail.thread)
Widget 字段小部件 / 前端组件
Registry 注册表
Service (frontend) 前端服务
Patch / Monkey patch 运行时补丁
ORM 对象关系映射
Controller 控制器(HTTP 路由)
jsonrpc JSON-RPC 类型路由
Company 公司(多公司)
Currency rate 汇率

E.3 截图占位

图 99-E 双语术语表排版示意

E.4 本节练习

  1. 互测:两人互考 10 个 术语 英文拼写与中文含义
  2. 翻译:将 第四十九章 某一节标题 译成英文目录条目练习双语目录)。
  3. 拓展:补充 5 个 你项目常用的 业务术语 中英对照。

99.6 附录 F:官方文档对照与延伸阅读

附录 F独立文件(表格与外链多,便于单独修订、不必重排全书页码):

内容包括:Developer 总入口Tutorials / How-to / Reference 的阅读建议,教材各章 ↔ 官方 ReferenceHow-to 精选 对照表,以及 User Docs、Contributing 等周边链接。前言「本书与 Odoo 19」亦指向该文件。


本章综合练习(印刷装订前自检)

  1. 图档:核对全书 ./images/ 占位文件名 与正文 ![]() 一致可脚本提取)。
  2. 排版:用 Pandoc 试排 一章 + 本附录 PDF,检查 中文换行、代码块、表格跨页全书索引.md 有示例命令)。
  3. 习题册:全书 综合练习 参考答案见项目内 answers.md;若另印 PDF,避免学员正文同册
  4. 迁移周:用 附录 A + B「19.0 升级一日 checklist」 10 行以内
  5. 综合:解释 Domain 前缀表达式SQL WHERE思维差异各一句)。

本附录对应白皮书「附录 A~F」结构(F 见上节链接文件);章次编为 第九十九章 以衔接 第四十九章