• 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

  • 相关阅读:
    nodejs-supervisor
    javascript数组操作(创建、元素删除、数组的拷贝)
    mysql索引优化-order/group
    php-kafka
    大流量高并发解决方案
    MySQL数据类型和常用字段属性总结
    php一致性hash算法
    面试中的排序算法总结
    PHP的运行机制与原理(底层)
    Mysql中的锁机制
  • 原文地址:https://www.cnblogs.com/wanxiangIT/p/10808197.html
Copyright © 2020-2023  润新知