Website form实现增删除改查后端数据 - xiaohao0576/odoo-doc GitHub Wiki

面临的问题

Odoo原生的website form controller有比较强的权限管控,并且只可以做新数据的创建,无法做现有数据的修改或删除。所以需要一种方式可以利用odoo website form.js去实现后端数据的读写

目标和优势

  • 不需要修改Odoo源码,不需要安装addons
  • 兼容Odoo Online SaaS版本
  • 充分利用Odoo Website的form.js的前端渲染和验证功能,并且还可以使用可视化的form builer生成代码

实现思路

使用Odoo website 的server actions,写自定义的路由

文档: https://www.odoo.com/documentation/19.0/developer/tutorials/importable_modules.html#website-controllers 源码: https://github.com/odoo/odoo/blob/19.0/addons/website/models/ir_actions_server.py

在写qWeb XML时,指定action url

需要修改两个属性,分别是 action和 force_action 文档: https://www.odoo.com/documentation/19.0/developer/howtos/website_themes/forms.html 源码:https://github.com/odoo/odoo/blob/77fb2c3ba22bafa951a0232758bd06249fd741c6/addons/website/static/src/snippets/s_website_form/form.js#L404-L408

注意事项

  • 如果代码比较多,为了方便维护,可以按功能拆分成不同的website server action
  • qWeb需要t-call web.frontend_layout,才能在前端引入form.js的运行环境。当然,如果需要更多自定义,也可以从0开始自定义layout