odoo 重写unlink方法

本文深入探讨Odoo HR模块中Employee类的unlink方法实现,特别是resource_id字段的级联删除机制。通过对比不同写法,揭示了mapped函数在记录集操作中的作用,以及不当使用可能导致的内存溢出问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解读odoo 自带hr模块

model hr.py中

class Employ 中有个方法如下

resource_id = fields.Many2one('resource.resource', string='Resource',
        ondelete='cascade', required=True, auto_join=True)
        
@api.multi
    def unlink(self):
        resources = self.mapped('resource_id')
        super(Employee, self).unlink()
        return resources.unlink()

上面代码可以改写成下面的两种形式,三种形式对比如下:
在这里插入图片描述
mapped()函数
使用提供的函数对记录集的每个记录进行计算,如果结果是记录集,则返回这个记录集
因字段resource_id有属性ondelete=‘cascade’ – 级联删除
当对resource_id进行unlink()时,会递归删除造成内存不足–上图中间的写法
最后一种写法
result是把employee删除的结果返回

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值