Odoo8中,API 接口分为traditaional style和record style两种类型:
-
traditional style 指的就是我们在7.0中使用的类型,def (self,cr,uid,ids,context)式的语法.
-
record style 8.0及以后版本精简化参数后的风格,只保留了self和args,形如def (self,args)
新 API 的几个重要装饰器
model
model装饰器的作用是返回一个集合列表
定义
- @api.model
- def _get_lang(self):
- langs = self.env['res.lang'].search([])
- return [(lang.code,lang.name) for lang in langs]
使用
- langs = fields.Selection(string="Lang",selection="_get_lang")
one
one装饰器的作用是对每一条记录都执行对应的方法,相当于traditional-style中的function 定义
- @api.one
- def _compute_now(self):
- self.now = fields.Datetime.now()
使用
- now = fields.Datetime(compute='_compute_now')
constrains
constrains装饰用于对字段进行限制 定义
- @api.constrains('age')
- def _check_age(self):
- if self.age<16:
- raise ValueError(_('Age must be older than 16'))
使用
- age = fields.Integer(string="age")
Odoo 8.0 中有几个模块是用新 api 实现的,例如:events、base、accounting,我们可以参考学习