我删除了表中的一些记录,但此表中很少有一个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字段的表
答案 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"
重新定义字段并继续删除。