onchange方法的改写和实现功能
为了对视图中的数值型字段进行非负校验,使用了onchange的装饰器,但是由于字段过多导致写了好多的onchange,代码极其冗余,后来采用改写onchange的方法来实现简单的检验
图1
简单解释一下几个参数的内容:
values:当前状态下所获取到的记录的值
field_name:状态改变的字段,在odoo中加载页面时也是会调用onchange,所以此时的field_name是包含你加载出来的视图中的全部字段;而当你修改某个字段后,field_name就是你修改的字段。
field_onchange:给字段一个onchange值,字段状态改变后其onchange值也会改变
接下来就是实现的原理:将你所需要检验的字段写在一个列表里,用field_name进行判断,满足条件再执行值的判断。改方法会有几个可使用的返回值,如value、warning、result等值。由于自身理解不深,就不误导了。
注:为了在修改值时触发该方法,因此定义了一个api.onchange(),将需要校验的字段写在里面,并且定义了一个空函数,但是这样的写法应该是不太准确的。