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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM