我开始使用Odoo v8.0的新API,但是在这样的计算字段中找不到有关存储触发器的有用信息(对于v7.0和v6.1):Store Parameter in Odoo v6
在Odoo v8.0中,我尝试使用与v7.0相同的语法,但我无法使其工作,因为JSON响应无法返回给Web客户端:
<function _store_trigger> is not JSON serializable.
我读到那个商店参数已被转换为仅布尔字段(没有触发器的字典):Odoo store function: JSON not serializable
那么如何设置触发器来存储数据库中计算(和相关)字段的值?我想主要为他们制作过滤器和组,因此search function
不会有用。
答案 0 :(得分:4)
在V8中,您可以将任何字段用作计算字段。在V8中,store是一个布尔值的参数,默认情况下是 false 。
如果明确设置“store = True”,则您在 @ api.depends('name')中提到的从属字段将充当触发字段。
您可以指定另一个对象字段作为触发字段,该字段在会计模块中必须是 @ api.depends('other_object.field_name')
upper = fields.Char(compute='_compute_upper', store=True)
@api.depends('name')
def _compute_upper(self):
for rec in self:
self.upper = self.name.upper() if self.name else False
如果它为“false”,则该值不会存储在数据库中,并且每次都会计算。
upper = fields.Char(compute='_compute_upper')