小白读odoo参考手册--修饰器

本文引用’刘金亮’的<odoo
快速入门与实战>的节选内容,同时也归纳了多为大神和自己(odoo小白)的总结,在文章的结尾,也会列出参考的文献,作者,及作品连接,方便大家查看与学习.会不定时更新此文章内容.
如大家想了解更改相关知识和信息,请上书店及官网购买此书,支持正版.也可以去大神的主页查看更多专业知识,系统的学习odoo.

常用修饰器

修饰器是可以在不改变函数的基础上增加函数的功能,也可以将装饰器本身理解为一种函数,当参数字段的值变化时,便调用此方法

  • @api.constrains(‘xxxx’)(用于评估和检查,当参数字段的值变化时便开始检查,如果检查不通过,则字段值不会发生变化,在前端页面也会抛出一个异常)
	@api.constrains('telephone')
    def check_telephone(self):
        if self.search_count([('telephone','=',self.telephone)])>1:
            raise UserError("电话号码必须是唯一的!")
 #当电话号重复时,抛出异常,否则记录
  • @api.onchange(‘xxxx’)(用于系统在用户进行交互时自动更新相关联的字段,当参数字段的值变化时,抛出提示,但并不会阻止用户的行为)
	@api.onchange('name')
    def onchange_telephone(self):
        if self.name=="小白":
            return {
                'warning':{
                    'title':"用户异常",
                    'message':"不爱学习的同学不能登记(生气脸)"
                }
            }
#当输入的值为'小白',抛出异常
#因为不管爱不爱学习都是学生,所以只警告,并不阻止登记操作,后门还是留的
  • @api.depends(‘xxxx’)(用于计算字段,可以用于标记需要被触发的计算.使用此装饰器应该注意计算字段必须被赋值,否则便会报错)
computes=fields.Char(string="电话号码数",
		required=True,compute="depends_telephone")
#在字段中调用才能生效

	@api.depends('telephone')
    def depends_telephone(self):
        for record in self:
                record.computes = len(record.telephone)*10
#将电话的长度*10,并返回
#只看代码用法,不必考虑此代码的逻辑,因为此段代码的业务逻辑是瞎编的
  • @api.model(会给被装饰的方法自动带上模型该有的信息,开发者不需要传参数,改写odoo的api,就需要用到此修饰器)
	@api.model
	def create(self,vals):
		#继承方法前添加代码:只能使用'vals'
		new_recoed=super().create(vals)
		#继承方法后添加代码:还可以使用'new_recoed'
		return new_recoed
  • @api.multi对于多个记录集的操作
@api.multi
    def write(self, vals):
        res = super(test_epidemic, self).write(vals)
        return res
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值