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

被折叠的 条评论
为什么被折叠?



