@api.one
主要用于当前记录集里面只有一条记录的情况,self代表当前正在操作的记录,返回值是一个list。
@api.multi
主要用于self是当前多个记录的合集,常用for - in 语句进行遍历。
multi通常用于:在tree视图中点选多条记录,然后执行某方法,那么那个方法必须用@api.multi修饰,而参数中的self则代表选中的多条记录。
如果仅仅是在form视图下操作,那么self中通常只有当前正在操作的记录。
@api.model
类静态方法,通常用于类级别上操作,而非涉及具体的记录集的操作,此时的self仅代表模型本身,不含任何记录信息。
@api.onchange
用户界面表单视图触发,当用户编辑指定字段值时,立即执行一段业务逻辑。这可用于执行验证,向用户显示消息或修改表单中的其它字段。
模型中对某一个字段的onchange装饰只能有一个,继承的模型中要使用要调用。
通过为字段添加属性on_change=”0″可在特定表单中关闭 on change 行为,比如<field name=”xxx″ on_change=”0″ />
onchange 方法无需返回任何值,但可以返回一个包含警告或作用域键的字典:
警告的键应描述显示在对话框中的消息,如{‘title’: ‘Message Title’, ‘message’: ‘Message Body’}
@api.contrains
这个装饰器确保当进行创建、写入、删除等操作时,被装饰的方法会被调用。主要用于数据库字段的约束条件上。
@api.depend
主要用于当字段被ORM或表单修改,它所装饰的方法会被触发调用。
多与compute方法连用,当多个字段使用同一个compute方法时,要在多个字段上都加上compute方法。compute方法修改的字段要注意readonly与force_save,如果没有force_save,往往修改的字段不会生效。如果本字段上加compute方法可以不用depend,而非本字段上加compute方法用到了其他的字段,就要加depend。
@api.returns
保证返回值的统一。将返回基于原始返回值指定model的记录集。