odoo 重写unlink方法

解读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删除的结果返回

猜你喜欢

转载自blog.csdn.net/qingdao_program/article/details/103502522