(原创)再论odoo中的计算字段

计算字段严格意义上分为两种:存储型和非存储型。

1)非存储型的计算字段,在其计算方法中,要确保该字段被赋值,也是保证缓存中有这个字段的值,否则会报错。13以前会报CacheMiss的错误,14以后会报ValueError的错误。

  当他依赖的字段修改时,通过modified方法,使它在缓存中无效,在后续访问这个字段计算时会重新计算。

2)存储型计算字段中,则没有必须在计算方法中赋值的限制,当他依赖的字段修改时,通过modified方法,将相关记录和改字段加入到当前环境中的待计算缓冲区中(通过env.add_to_compute方法),

    在后续访问该计算字段时,首先检查待计算缓冲区中是否存在相关的记录,有则重新计算。

 

 

posted @ 2024-01-10 10:30  goyier  阅读(21)  评论(0编辑  收藏  举报