odoo模块升级至17的关键点-后台py-界面xml-前端owl.js升级总结
![头像](http://www.yxskj.cn/wp-content/themes/ceonova-pro/static/images/avatar.png)
odoo17从2023年10月发布至今基本已过半年,细节基本完善,就我们在官方及中文应用商店的销售情况来看,odoo17的模块下载购买已占据了至少一半,可以新版本已经有了不错的应用,广为客户接受。
我们欧度智能odooAi的数百个模块也已有大半升级到了odoo17版,以下我们从开发者角度,总结下从odoo其它版本如16升级17的关键要点,主要包括模块定义,后台.py文件,界面xml文件,前端owl开发等几大方面。
业务逻辑变化也比较多,主要集中在电商网站及门店POS等,后续起新文详述先给个odoo17模块升级的脑图总结
Manifest文件版本:不再支持4位版本号,精简掉最开头的大版本号,格式只能为`x.y`, `x.y.z`比如原来为 16.24.03.30,现在要将大版本号去掉,使用 24.03.30hook变化,只有一个env参数。
def post_init_hook(env)def pre_init_hook(env)def uninstall_hook(env).py后台python开发文件Fields定义:不再支持 states 处理只读与否,一般放到 xml 中处理特殊的只读属性
name_get: 改为 _compute_display_name模型变更:具体业务模块中比较核心的如 mail.channel 改为 discuss.channel.xml界面文件升级,可在rng中查看。
关键属性: Since 17.0, the “attrs” and “states” attributes are no longer used. 直接使用py表达式 invisible=”is_mega_menu != True”
设置Block中的中调整:多用app,setting标签
不在root级别支持 groups标签,可直接删除,在xml内部fields等定义中处理widget提级:widget提级,可以不绑定在field直接使用,比如 tree中直接与数据无关的使用tree视图: 增加 open_form_view,可以特殊处理查看详情。
可以直接挂载widget,不被field包裹不可见调整为 column_invisiblegraph视图:柱图增加处理 cumulated_startcalendar视图:quick_add 变为 quick_create 且可以通过quick_create_view_id指定视图
pivot视图:无变化search视图:无变化.js前端升级owl2详情参考 官方文档 https://www.odoo.com/documentation/17.0/developer/reference/frontend/framework_overview.html
细节较多,可参考官方市场 app_web_widget_ztree 模块,基本全面应用新 js 规范https://apps.odoo.com/apps/modules/17.0/app_web_widget_ztree/
web端全面使用owl2,es规范website端可使用旧snippets,同时可以使用owl取消registerPatch,统一用类的 patch处理如: patch(类.prototype, {xxx})。