【odoo二次开发】ORM框架(二、Model方法及api装饰器)

介绍

二开时模型创建完毕并配好视图后对于基本的CRUD操作不需要再在代码中实现,框架会自动提供这些功能,但如果我们的开发需求不仅仅是对当前对象的CRUD时,就需要在框架原来方法的基础上扩展出一些自己所需要的操作
.odoo8以前与odoo8以后使用两种不同的模型接口形式(odoo8两者都可使用),odoo8以前老api中,记录ids和上下文环境均通过参数传入def old_api (self, cr, uid, ids, context),比较凌乱,不建议使用。以下内容均为new api内容。

API装饰器

@ api.model

封装不关联数据记录的模型对象,用于与数据库记录无关的逻辑方法,例如:创建方法。

@ api.multi

封装关联多个数据记录的模型对象,用于与数据库记录关联的处理方法。

@ api.one

封装关联单条数据记录的模型对象,用于与单条数据库记录关联的处理方法。

@ api.onchange

页面字段值变更触发的调用方法,见下文中的onchange

@ api.constrains

对添加数据自定义约束。

@api.constrains(‘field_name1’,’field_name2’,…) def _check_field(self):
#校验方法不符合校验条件抛出异常

模型方法

创建创建记录

原型:def create(self, vals)
vals:记录属性值字典

搜索查找记录

原型:def search(self, args, offset=0, limit=None, order=None, count=False)
args:domain格式的条件列表; offset:结果忽略条数; limit:最大查询条数

读取取记录属性值

返回指定ids记录的指定字段字段值,采用列表加字典的数据结构([{},{},...])返回。
原型:def read(self, fields=None, load='_classic_read'):
字段:列表可指定要读取的属性名称

search_read

原型:def search_read(self, domain=None, fields=None, offset=0, limit=None, order=None)
用法即搜索方法与阅读方法相结合。

unlink删除记录

原型:def unlink(self)

写修改记录

原型:def write(self, vals)
vals:修改属性值字典

onchange页面变更触发事件

页面字段值发生变更时由前端的js框架触发调用,一般用于控制页面元素联动。
原型:def onchange(self, values, field_name, field_onchange)

default_get设置缺省值

原型:def default_get(self, fields_list)

name_get设置记录显示名

原型:def name_get(self)


 

猜你喜欢

转载自blog.csdn.net/jehuyang/article/details/85138844
今日推荐