“装饰器方法”的版本间的差异
1360857908(讨论 | 贡献) (创建页面,内容为“在我们的使用中,我们遇到的几种方法使用 API 装修器像@api.multi。这些都是服务器知道的重要如何处理方法。现在让我们回顾...”) |
|||
第26行: | 第26行: | ||
</nowiki> | </nowiki> | ||
+ | |||
+ | 上一节:[[使用ORM API]] 下一节:[[重写 ORM 的默认方法]] |
2017年12月26日 (二) 00:38的最新版本
在我们的使用中,我们遇到的几种方法使用 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 的默认方法