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装饰器的作用是返回一个集合列表
定义


  1. @api.model
  2. def _get_lang(self):
  3. langs = self.env['res.lang'].search([])
  4. return [(lang.code,lang.name) for lang in langs]

使用


  1. langs = fields.Selection(string="Lang",selection="_get_lang")

one

one装饰器的作用是对每一条记录都执行对应的方法,相当于traditional-style中的function 定义


  1. @api.one
  2. def _compute_now(self):
  3. self.now = fields.Datetime.now()

使用


  1. now = fields.Datetime(compute='_compute_now')

constrains

constrains装饰用于对字段进行限制 定义


  1. @api.constrains('age')
  2. def _check_age(self):
  3. if self.age<16:
  4. raise ValueError(_('Age must be older than 16'))

使用


  1. age = fields.Integer(string="age")

Odoo 8.0 中有几个模块是用新 api 实现的,例如:events、base、accounting,我们可以参考学习