用途:odoo.upgrade.util 模块用于 Odoo 版本升级过程中的安全数据迁移,通过助手函数处理复杂数据库操作,确保跨 Odoo registry 的更新一致。
主要能力: rename_field(cr, model, old_name, new_name):重命名数据库列,并更新 ir.model.fields、ir.model.data 及 ir.ui.view 引用。 remove_field(cr, model, field_name):安全删除字段及其数据。 move_field_to_module(cr, model, fieldname, old_module, new_module):把字段元数据从一个模块移到另一个模块。 rename_model(cr, old_name, new_name):重命名模型并更新所有关联 XMLID 与元数据。 rename_xmlid(cr, old_xmlid, new_xmlid):重命名外部 ID,参数需使用完整限定名(如 base.group_user)。 edit_view(cr, xmlid):上下文管理器,用 lxml.etree 编辑视图架构,用法为 with util.edit_view(cr, 'module.view_id') as arch: ...。 merge_module(cr, old_name, into_name):将一个模块的元数据合并到另一个模块。 module_installed(cr, module):返回指定模块是否已安装或正在升级。 env(cr):返回当前游标的 odoo.api.Environment 实例。 table_of_model(cr, model):返回 Odoo 模型对应的数据库表名。
使用方式与最佳实践:升级前阶段用字段和模型重命名,使新版本在自身安装期间能找到数据;升级后阶段用于需要新 registry 部分加载的复杂数据转换。迁移脚本应放在 <module>/migrations/<target_ver>/ 目录下。
限制:资料未提供支持的 Odoo 版本范围、代码示例细节、依赖或错误处理说明,具体以 Odoo Upgrade Utils 官方文档为准。