如何在 Odoo 8 中为计算字段设置存储触发器?

How to set store trigger for computed fields in Odoo 8?

我开始使用 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 不会有用。

在 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')