zoukankan      html  css  js  c++  java
  • odoo API装饰器one、model、multi的区别

    1.one装饰器详解

    odoo新API中定义方式:
        date=fields.Date(string="date",compute="_get_date") 

        @api.one  
        def _get_date(self):  
            self.date=fields.Date.today()  

    等同于旧API的function 类型的简化版,但是需要特别注意到是one装饰类无返回值。

    2. multi装饰类详解

    odoo新API中定义方式:

    1.一般将multi装饰类用于tree试图模式的报表中,如下图实例:
        @api.multi  
        def action_done(self):  
            return {  
                        'name': _(u'科目'),  
                        'view_type': 'form',  
                        "view_mode": 'tree,form',  
                        'res_model': 'account.account',  
                        'type': 'ir.actions.act_window',  
                        'domain': [('id', 'in', return_list)],  
                        'views': [(tree_id, 'tree'), (form_id, 'form')],  
                        'view_id': [tree_id],  
                    }  

    2.multi使用可以参考one装饰类,不过multi类有返回值。

    3.model装饰类,该装饰类一般用于定义定时任务的方法中

        @api.model  
        def action_done(self):  
             .......  
             .......  

    类似于旧API:

        def action_done(self,cr,uid,context=None):  
            pass  

    通过实例,可以看出model装饰类,是没有ids传入的,但是他可以有返回值。

    总结:

    1.其实通过上面的实例不难看出,model与multi可以有返回值,而one是没有返回值的,如果用one装饰器,即使写了return,也是没有作用的,虽然不会报错,但是如果不知道原因的瞎折腾也是比较折磨人的

    2.还有一点区别的是multi与one装饰类是有ids传入的,而model没有ids传入。

  • 相关阅读:
    Cookie和Session的作用和工作原理
    df和du显示的磁盘空间使用情况不一致问题
    haproxy配置详解
    使用LVS实现负载均衡原理及安装配置详解
    四层、七层负载均衡的区别
    Linux内核参数之arp_ignore和arp_announce
    Megacli查看Dell服务器Raid状态
    Visual Studio 2015中使用gdb远程调试linux程序
    编译Qt-mingw使用的opencv
    [webrtc] 强制使用tcp传输
  • 原文地址:https://www.cnblogs.com/hellojesson/p/7921129.html
Copyright © 2011-2022 走看看