【转】odoo 新API装饰器中one、model、multi的区别

http://blog.csdn.net/qq_18863573/article/details/51114893

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:

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

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

总结:

 

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

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

 

转载于:https://www.cnblogs.com/KKSoft/p/8459967.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值