【问题标题】:How to set store trigger for computed fields in Odoo 8?如何在 Odoo 8 中为计算字段设置存储触发器?
【发布时间】:2015-04-09 11:44:21
【问题描述】:

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

【问题讨论】:

    标签: python openerp odoo openerp-8 odoo-8


    【解决方案1】:

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

    【讨论】:

    • 所以store=True 会在每次更改时更新值?相关领域呢?
    • 经过一些尝试和测试。我看到api.depends 使store=True 在字段更改时触发。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    相关资源
    最近更新 更多