0

我开始使用 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 存储函数:JSON 不可序列化

那么如何设置触发器以将计算(和相关)字段的值存储在数据库中?我想主要为他们制作过滤器和组,所以search function不会有用。

4

1 回答 1

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

如果它为“假”,则该值不存储在数据库中,并且每次都会计算。

upper = fields.Char(compute='_compute_upper')
于 2015-04-09T13:57:27.787 回答