如果删除具有one2many字段的另一个表,如何删除包含many2one字段的表中的记录?

时间:2017-02-24 10:59:07

标签: postgresql openerp

我删除了表中的一些记录,但此表中很少有一个2个字段与其他表(many2one)相关。你们都可以帮助我如何使用查询吗?我也想删除many2one字段记录。

delete from manpower_estimate where manpower_estimate_line  IN (select id from res_scheduledjobs where contract_start_date < '2014-12-31' and contract_end_date < '2014-12-31')

这就是我正在做的事情。 res_scheduledjobs是包含one2many字段的表,manpower_estimate是包含many2one字段的表

1 个答案:

答案 0 :(得分:1)

如果您使用的是Odoo v10,请检查odoo/fields.py中的Many2one类的文档字符串;如果是1840行以前的版本,请检查openerp/fields.py

创建Many2one字段时,您可以使用ondelete参数向ORM表示删除记录时会发生什么。

  

:param ondelete:删除引用记录时该怎么办;           可能的值包括:'set null''restrict''cascade'

您要找的是cascade

您可能希望避免使用sql删除关系,因为它可能会破坏您的数据库(因为您没有使用ORM)。另外,如果你使用sql删除它们,那么你需要记住其他表可能包含引用。

因此,请使用ondelete="cascade"重新定义字段并继续删除。