Odoo中文网|Odoo实施培训

标题: 装饰器方法api [打印本页]

作者: 施程浩    时间: 2018-5-7 15:45
标题: 装饰器方法api
本帖最后由 施程浩 于 2018-5-7 15:50 编辑

1.@api.multi装修器最常用来处理新的 API 记录集。在这里self是一个记录集,且方法通常会包括for 循环来循环它。
在某些情况下,编写该方法以用在单例模式︰ 包含不超过一条记录的记录集。 @api.one 装饰器在 9.0 被弃用,应该避免再使用。相反,我们应该使用 @api.multi 并在方法代码中添加一条行self.ensure_one(),以确保它是一个单例。
提到@api.one装饰器已被弃用,但仍然支持。出于完整性的考虑,可能需要知道它封装修饰器的方法,一次为为他提供一条记录,并它为做记录集迭代。在我们的方法能保证self是单例模式。每个单独的方法调用的返回值进行聚合为一个列表并返回。
2.@api.model装饰器是一个类级别的静态方法,它不使用任何记录集数据。为保持一致性, self仍然是一个记录集,但它的内容无关。请注意,能从用户界面中的按钮使用这种类型的方法。
其他一些装修器有更具体的用途,它们将与前面所描述的装饰器一起使用︰
3.@api.depends(fld1,...)用于计算字段函数,用于确保(重新)计算改变被触发 l
4.@api.constrains(fld1,...)用于验证函数,用于确保哪些约束生效被触发 l
5.@api.onchange(fld1,...)用于改变函数,用于确保表单上字段的动作被触发
特别是onchange方法可以向用户界面发送一条警告消息。例如,这可以警告用户刚刚输入的产品数量在库存中是不可用的,而不会阻止用户继续使用。这通过方法返回一个描述警告消息的字典来完成的︰
return {
         'warning': {
         'title': 'Warning!',
         'message': 'You have been warned'}
        }






欢迎光临 Odoo中文网|Odoo实施培训 (http://www.chinaodoo.net/) Powered by Discuz! X3.2