(原创)再论odoo中的计算字段
计算字段严格意义上分为两种:存储型和非存储型。
1)非存储型的计算字段,在其计算方法中,要确保该字段被赋值,也是保证缓存中有这个字段的值,否则会报错。13以前会报CacheMiss的错误,14以后会报ValueError的错误。
当他依赖的字段修改时,通过modified方法,使它在缓存中无效,在后续访问这个字段计算时会重新计算。
2)存储型计算字段中,则没有必须在计算方法中赋值的限制,当他依赖的字段修改时,通过modified方法,将相关记录和改字段加入到当前环境中的待计算缓冲区中(通过env.add_to_compute方法),
在后续访问该计算字段时,首先检查待计算缓冲区中是否存在相关的记录,有则重新计算。
清风明月入怀抱,猿鹤听我再抚琴