由于实际业务场景需要,odoo 的开发者,结合实际情况,编写了几个相关API,用于实际场景的控制。
onchange:当在页面的前端,字段数据发生变化时,对字段的控制。
场景应用:在界面上,当用户编辑数据字段时,如果该字段通过onchange属性进行控制了,那么当用户修改数据后,将鼠标光标移动到其他地方(非用户当前编辑的字段的位置),那么就会触发onchange方法
onchange 的应用实例:
给字段的赋值或清空数据
对字段的进行校验,提供提示
compute:当页面的数据发生变化时,(不论前端还是后端),自己计算相关字段的数据。
场景应用:当字段是由计算而来的,字段较为灵活。可以一次性计算多值。
应用实例:
余额 = 月初金额 - 本月支出金额 + 本月收入金额 余额字段定义时,使用计算字段是极为合适的。
注意:计算字段默认不存储在数据库中,同时,该字段的计算过程,需要依赖其它字段进行计算,当界面上出现了它计算依赖的字段,并且进行保存的时候,就会自动计算。
该字段如果需要被搜索,有两种方式可以实现:1.需要存储起来,加上store= True ,2.加上固定的属性 _search。
constraint: 对数据的限制,在保存时进行校验
应用场景:当需要对数据进行限制,但是仅仅通过sql_constraint 还有onchange,compute等其他方法无法实现的情况下,使用它。
应用实例:
当某个字段需要在某种其他字段为某种类型的情况下,它会有字段的范围的限制,如:员工为famale属性时,才会有3.8妇女假期。