odoo api介绍

odoo api修饰器介绍与应用
参考文档:https://www.cnblogs.com/kfx2007/p/6093994.html

一、one

one的用法主要用于self为单一集合的情况,被one装饰的方法会返回一个list[None]
例子:

@api.one  
def _get_date(self):  
    self.date=fields.Date.today()  

二、multi
multi则要求self是多个记录的合集,env中包含ids参数
例子:

@api.multi
def write(self,vals):
    if vals.get('name'):
        val['name']=u'test'
return super(test,self).write(vals)

三、model

model要求self是一个记录集,env中并不包含ids参数,因此重构write和unlink等方法,不能使用model修饰器

@api.model
def write(self,vals):
    vals={'name':'test',}
return super(test,self).create(vals)

四、contrains

@api.constrains('completion_time')
def _check_completion_time(self):
    for i in self:
        if  datetime.datetime.strptime(i.completion_time, "%Y-%m-%d %H:%M:%S") < datetime.datetime.utcnow():
            raise ValidationError('完成时间需大于当前时间')

五、depends

depends 主要用于compute方法,用来标该方法依赖于哪些字段的装饰

@api.depends('completion_time')
def compute_completion_time(self):
    for i in self:
        if i.completion_time:
            if datetime.datetime.strptime(i.completion_time, "%Y-%m-%d %H:%M:%S") > datetime.datetime.utcnow():
                i.overdue_status = u'未逾期'
            else:
                i.overdue_status = u'已逾期'

六、onchange

onchange的使用方法非常简单,就是当字段发生改变时,触发绑定的函数

@api.onchange('responsible_department')
def onchange_responsible_person(self):
    return {
        'domain': {'responsible_person': [('department_id', '=', self.responsible_department.id)]},
    }

七、return

returns的用法主要是用来指定返回值的格式,它接受三个参数,第一个为返回值的model,第二个为向下兼容的method,第三个为向上兼容的method

猜你喜欢

转载自www.cnblogs.com/wanxiangIT/p/10808197.html
今日推荐