如何在 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')
我开始使用 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')