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

Ana*_*med 0 python openerp-8 odoo 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 存储函数:JSON 不可序列化

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

no *_*der 5

在 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
Run Code Online (Sandbox Code Playgroud)

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

upper = fields.Char(compute='_compute_upper')
Run Code Online (Sandbox Code Playgroud)