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

时间:2015-04-09 11:44:22

标签: python openerp odoo openerp-8 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不会有用。

1 个答案:

答案 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')