---------------------
更新时间:
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 最大的不同是,它在表单里面改变数据时,对应的字段
            发生改变,但只会把结果暂放在缓存中,没会直接改变到数据库,只有提交
            了表单过后,才会改变数据表中的数据

最新文章

  1. 学习zepto.js(对象方法)[2]
  2. 在线代码编辑器CodeMirror简介
  3. codeforces 519C. A and B and Team Training 解题报告
  4. android 入门-使用adb安装及卸载apk
  5. memcached与.NET的融合使用(二)
  6. 【助教】Java获取数据库数据展示
  7. android之BitmapFactory.Options的使用
  8. 巧妙使用checkbox制作纯css动态导航栏
  9. 《Linux命令行大全》系列(一、shell是什么)
  10. jquery 提示信息显示后自动消失的具体实现
  11. MSSQL Server语句
  12. 关于Oracle备份中的fractured block
  13. Java NIO Channel之FileChannel [ 转载 ]
  14. iOS开发之判断用户是否打开APP通知开关
  15. (摘)C#生成随机数的三种方法
  16. Linux系统安装IonCube的方法详解教程
  17. XSS和CSRF
  18. nodejs 单线程 高并发
  19. 一名前端Web架构师的成长之路(转载)
  20. 1-10假期训练(hdu-2059 简单dp)

热门文章

  1. CodeForces 42A Guilty — to the kitchen!
  2. C# 操作的时候接收用户输入密码进行确认
  3. FJNU 1156 Fat Brother’s Gorehowl(胖哥的血吼)
  4. DB2常识
  5. iOS - OC 术语表
  6. iOS - Swift 与 C 语言交互编程
  7. mysql中替换行首字符
  8. php三维数组变二维数组
  9. 用Volley让GridView加载网络图片
  10. MFC编程入门之五(MFC消息映射机制概述)