装饰器方法

来自Odoo大V社-odoo中文开发手册
跳转至: 导航搜索

在我们的使用中,我们遇到的几种方法使用 API 装修器像@api.multi。这些都是服务器知道的重要如何处理方法。现在让我们回顾一下他们的使用。

@api.multi装修器最常用来处理新的 API 记录集。在这里self是一个记录集,且方法通常会包括for 循环来循环它。

在某些情况下,编写该方法以用在单例模式︰ 包含不超过一条记录的记录集。 @api.one 装饰器在 9.0 被弃用,应该避免再使用。相反,我们应该使用 @api.multi 并在方法代码中添加一条行self.ensure_one(),以确保它是一个单例。

提到@api.one装饰器已被弃用,但仍然支持。出于完整性的考虑,可能需要知道它封装修饰器的方法,一次为为他提供一条记录,并它为做记录集迭代。在我们的方法能保证self是单例模式。每个单独的方法调用的返回值进行聚合为一个列表并返回。

@api.model装饰器是一个类级别的静态方法,它不使用任何记录集数据。为保持一致性, self仍然是一个记录集,但它的内容无关。请注意,不能从用户界面中的按钮使用这种类型的方法。

其他一些装修器有更具体的用途,它们将与前面所描述的装饰器一起使用︰

 @api.depends(fld1,...)用于计算字段函数,用于确保(重新)计算改变被触发  @api.constrains(fld1,...)用于验证函数,用于确保哪些约束生效被触发  @api.onchange(fld1,...)用于改变函数,用于确保表单上字段的动作被触发


特别是onchange方法可以向用户界面发送一条警告消息。例如,这可以警告用户刚刚输入的产品数量在库存中是不可用的,而不会阻止用户继续使用。这通过方法返回一个描述警告消息的字典来完成的︰

return { 
         'warning': { 
         'title': 'Warning!', 
         'message': 'You have been warned'} 
        } 

 

上一节:使用ORM API 下一节:重写 ORM 的默认方法