变更日志

Odoo 20.0 版

  • 新增 BinaryValue.filename,并更新二进制字段的 RPC 格式。参见 #266082。

  • 在 #281202 中移除了 Model._table_query。

  • 简化了翻译操作。字段现在有了复制函数,对于名为 “name” 的字符字段,其默认行为是追加 “(copy)”。参见 #272177 和 #284881。

  • 新增 populate 脚本,用于为测试生成假数据。

  • 将清单文件中的术语存储在模块自身的翻译文件中,而不是存于 base。参见 #264363。

Odoo Online 19.4 版

  • ir.access 合并了 ACL 和记录规则。参见 #166359。

  • 字段更新和反向计算的执行现在在 create() 和 write() 中都统一按 (field.write_sequence, field_index) 排序。参见 #265469。

  • 基于 h11 的新 HTTP 服务器。参见 #247162。

  • 从模型代码中移除了 request,并新增 env.website。参见 #252766。

  • 线程安全的 ormcache 与自动信号通知。参见 #255059 和 #261736。

  • 将报表引擎模块化,并为 paper-muncher 做准备。分别参见 #259626 和 #264068。

Odoo Online 19.3 版

  • Binary 字段的类型现在是 BinaryValue。我们不再在整个数据流中用 base64 编码,而是直接使用这个新对象。参见 #244421。

  • 修复了 x2many 字段的缓存污染问题。访问此类字段时只返回可访问的记录。参见 #254944。

  • 使用域实现的自定义访问权限。域运算符 “access” 可以显式检查共模型的权限,从而简化访问规则的编写。参见 #254381 和 #239862。

  • 更简洁的 Model.concat 和 Model.union API。参见 #249731。

  • 在一次写入中写入多个翻译。参见 #246357。

Odoo Online 19.2 版

Odoo Online 19.1 版

  • ir.config_parameter 的新 API。参见 #223180。

  • 用于构建 SQL 的新 API。参见 #234156。

  • Field.compute_sql 允许为计算字段定义生成 SQL 的方式。完成之后,就可以使用计算字段进行分组和排序。参见 #221544。

Odoo 19.0 版

  • 为数据透视视图添加对 GROUPING SETS 的支持。参见 #194413。

  • 添加对域中动态日期的支持。参见 #216665。

  • 在 #217708 中弃用了 odoo.osv。

  • 在 #193636 中弃用了 record._cr、record._context、record._uid。

Odoo Online 18.4 版

  • CLI 新增了 reinit 选项,用于重新初始化模块。参见 #206408。

  • 可以编写并组合自定义域以注入任意 SQL。参见 #205208。

Odoo Online 18.3 版

  • 域优化在调用 Fields.search 方法之前应用。所有相等判断都按一致的方式处理:= 等价于 in。参见 #191549。

  • 新的 cron API,可通过批量提交报告进度。参见 #197781。

  • 演示数据不再默认加载。参见 #194585。

Odoo Online 18.2 版

  • read_group 已被弃用,后端使用应改用 _read_group,公共格式化 API 应改用 formatted_read_group。参见 #163300。

  • 新增 @api.private,用于区分公共 Python 方法与为 RPC 调用暴露的方法。参见 #195402。

  • odoo 模块的原生命名空间 PEP-420。参见 #195664。

Odoo Online 18.1 版

  • 用于操作域的新 odoo.domain 和 odoo.Domain API。参见 #170009。

  • 通过 #175783 将约束和索引声明为模型属性。

  • json 控制器已重命名为 jsonrpc。它们的调用方式相同,只有 Python 文件中的 type 发生了改变。参见 #183636。

Odoo 18.0 版

  • 按名称搜索现在与其他所有字段一样通过 _search_display_name 实现。参见 #174967。

  • 用于检查访问权限和规则的新方法现在同时结合访问权限与规则:check_access、has_access 和 _filtered_access。参见 #179148。

  • 通过 #174844,翻译可以从 Environment 中获取。

Odoo Online 17.4 版

  • 内部运算符 inselect 已被移除。替代方案是对 Query 或 SQL 对象使用 in。#171371。

Odoo Online 17.3 版

  • 现在可以在 read_group、_read_group 和域中按日期部分的数字分组,见 #159528。

Odoo Online 17.2 版

  • 通过 #127353,Field 的 group_operator 属性已重命名为 aggregator。

  • 现在可以按非存储的关联字段进行分组、聚合和排序,见 #127353。

Odoo Online 17.1 版

  • 方法 _flush_search() 已随 #144747 弃用。字段的刷新现在由 execute_query() 完成,它基于 _search() 及其他构建此类对象的底层 ORM 方法放入 SQL 对象中的元数据。这些方法还负责检查 SQL 对象中所用字段的访问权限。

Odoo 17.0 版

  • 引入 SQL 包装对象,使 SQL 组合更简单,并且在防范 SQL 注入方面更安全。ORM 的方法现在内部都使用它。由 #134677 引入。

Odoo Online 16.4 版

  • 方法 name_get() 已随 #122085 弃用。请改为读取字段 display_name。

Odoo Online 16.3 版

  • 方法 _read_group() 在 #110737 中有了新的签名

Odoo Online 16.2 版

  • 重构了搜索和读取方法的实现,以便以最少的 SQL 查询将两者结合。我们引入了两个新方法 search_fetch() 和 fetch(),它们利用了这种结合。更多细节可参阅拉取请求 #112126。

Odoo 16.0 版

  • 已翻译字段的翻译现在以 JSONB 值存储,见 #97692 和 #101115。代码翻译不再存储在数据库中。它们变为静态内容,在需要时从 PO 文件中提取。

  • search_count() 在 #95589 中开始考虑 limit 参数。它会限制要计数的记录数,在可以接受部分结果时提升性能。

Odoo Online 版本 15.4

  • 新增用于刷新到数据库和使缓存失效的 API,见 #87527。已向 odoo.models.Model 和 odoo.api.Environment 添加了新方法,它们在每种情况下实际执行什么操作这一点上不再那么令人困惑。参见 SQL 执行 一节。

Odoo Online 版本 15.3

  • 参数 args 已重命名为 domain,涉及 search() 和 search_count(),以及 _search()。#83687

  • filtered_domain() 会保留当前记录集的顺序。#83687

  • browse() 不接受 str 作为 ids。#83687

  • fields_get_keys() 和 get_xml_id() 这两个 Model 上的方法已弃用。#83687

  • _mapped_cache() 方法已被移除。#83687

  • 移除 One2many 和 Many2many 的 limit 属性。#83687

Odoo Online 版本 15.2

  • 字段上的特定索引类型:借助 #83274 和 #83015,开发者现在可以定义 PostgreSQL 可以在字段上使用哪种类型的索引。参见 odoo.fields.Field 的 索引属性。

  • Model 的 _sequence 属性已被移除。Odoo 让 PostgreSQL 使用主键的默认序列。#82727

  • _write() 方法对于不存在的记录不会引发错误。#82727

  • Field 的 column_format 和 deprecated 属性已被移除。#82727