(17)odoo方法和修饰器
---------------------
更新时间:
11:06 2016-09-27 星期二
18:06 2016-09-18 星期日
10:31 2016-03-01 星期二
---------------------
* 方法和修饰器
api是命名修饰器,识别 cr,cursor, uid, user, user_id, id, ids, context
# @api.returns
返回指定模型的记录集
@api.returns('res.partner')
def afun(self):
...
return x # a RecordSet
这样就返回合作伙伴记录集
当老的方式进行调用,会自动返回成 ids 列表,而不是记录集
# @api.one
返回当前记录,指明下面self是一条记录
@api.one
def afun(self):
self.name = 'toto'
自动循环记录集,给出记录给你操作,但不支持button的action对
应的方法,是要用@api.multi 和 self.ensure_one() 来代替
# @api.multi
返回记录集,指明下面的self是记录集
@api.multi
def afun(self):
len(self)
# @api.model
保证兼容版本,指明下面的self是模型对象
@api.model
def afun(self):
pass
# @api.constrains
保证关系时的约束
@api.one
@api.constrains('name', 'description')
def _check_description(self):
if self.name == self.description:
raise ValidationError("Fields name and description must be different")
# @api.depends
@api.one
@api.depends('partner_id.name', 'partner_id.is_company')
def _compute_pname(self):
if self.partner_id.is_company:
self.pname = (self.partner_id.name or "").upper()
else:
self.pname = self.partner_id.name
指定依赖,只要指定的字段发生变化,对应的会用方法重新计算
# @api.onchange
监控字段的变化,然后操作响应
@api.onchange('fieldx')
def do_stuff(self): #就这个特别self 是记录,不是记录集
if self.fieldx == x:
self.fieldy = 'toto'
只支持简单字段
和@api.depends 最大的不同是,它在表单里面改变数据时,对应的字段
发生改变,但只会把结果暂放在缓存中,没会直接改变到数据库,只有提交
了表单过后,才会改变数据表中的数据
最新文章
- 学习zepto.js(对象方法)[2]
- 在线代码编辑器CodeMirror简介
- codeforces 519C. A and B and Team Training 解题报告
- android 入门-使用adb安装及卸载apk
- memcached与.NET的融合使用(二)
- 【助教】Java获取数据库数据展示
- android之BitmapFactory.Options的使用
- 巧妙使用checkbox制作纯css动态导航栏
- 《Linux命令行大全》系列(一、shell是什么)
- jquery 提示信息显示后自动消失的具体实现
- MSSQL Server语句
- 关于Oracle备份中的fractured block
- Java NIO Channel之FileChannel [ 转载 ]
- iOS开发之判断用户是否打开APP通知开关
- (摘)C#生成随机数的三种方法
- Linux系统安装IonCube的方法详解教程
- XSS和CSRF
- nodejs 单线程 高并发
- 一名前端Web架构师的成长之路(转载)
- 1-10假期训练(hdu-2059 简单dp)