


本期内容
多个tree实时复制
在项目中我们有时会遇到如下需求:表单中的多个列表之间存在紧密联系,一个列表内增加或者删除数据,这些修改的数据需要在另一个列表实现实时复制。
一般的方法是在前端处理,而在Odoo中,列表是通过tree视图呈现,多个tree视图要实现上述功能,需要改造前端方法,较为复杂。
本文将从odoo后端出发,介绍在odoo中如何实现多个tree之间的数据复制,为大家提供一个参考方案~
具体案例
这里以项目中遇到的一个具体问题作为案例举例说明:
如下图所示,当我们在年度目标业绩中新增或删除一条数据时,需将这条增加或删除的数据复制到第一季度目标对应的列表中。
实施细节
本方案采用后端实现,主要通过@api.onchange装饰器来完成。
该装饰器的作用是监听输入框值的改变,若改变则会调用相应的方法。
这里我们在年度目标输入值后,通过@api.onchange装饰器将年度目标的值复制一份给第一季度目标。
因为第一季度可能存在不输入年度的值,因此这里需要在第一季度目标原有的基础上添加或删除年度目标的值,其代码如下图所示:
这里监听到年度目标后,将年度的信息进行了复制,复制方法如下:
此方法不会将数据存储到数据库,并且可以将复制的结果显示在自己的tree列表中,其效果如下图所示:
当我们在年度目标新增一条数据后,第一季度目标通过以上方法可以将新增的年度目标复制:
以上就实现了数据新增的复制。
删除数据复制与新增稍有区别,其实现方法如下:
删除方法只需要将其绑定的id置为None即可。


说得再多,不如尝试!
有更好的办法或疑问请
欢迎加入社群一起讨论哦⬇
本期作者
高级后端开发工程师 程欢


更多精彩内容
了解云基地,就现在!
IT技术哪家强
神州数码最在行
行业新星,后起之秀
历史虽不长,但是实 力 强









文章转载自神州数码云基地,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
















