我需要在onchange方法中删除one2many记录。我试过下面的代码。
*。PY
@api.onchange('abt')
def _onchange_active(self):
resident_flat_rel_id =[]
if self.active == False:
write=self.write({'resident_flat_rel_ids':[(2,self.resident_flat_rel_ids.id,False)]})
print'werite', write // prints True.
但是记录不会从数据库中删除。
resident_flat_rel_ids
是父模型中的one2many字段。
答案 0 :(得分:2)
实际上one2many
未存储在db中。 ORM正在从相关one2many
字段为您提供many2one
。一旦我们知道我们可以继续删除记录。
好了,现在我们知道one2many
是如何工作的,我们需要删除记录。这有两个选项:从db中删除记录或仅从one2many
字段中删除引用。
要删除记录,您应该删除它(请参阅官方文档.hint:unlink())。如果你想删除只是引用,那么你应该删除相关记录的many2one
字段,这很简单。
答案 1 :(得分:0)
你可以做一件事......
如果要删除完整数据,请执行以下操作:
迭代你的one2many字段,即resident_flat_rel_ids 像
for individual in resident_flat_rel_ids:
if some condition: //If requierd
individual.unlink()
如果您只想删除引用,请执行以下操作: 将每个对象的inverse_name(表示one2many字段的反向关系的a many2one字段)设为False
for individual in resident_flat_rel_ids:
if some condition: //If requierd
individual.inverse_name = False
答案 2 :(得分:0)
您可以使用以下one2many规则简单地删除one2many记录: (2,ID)删除并删除ID = ID的链接记录(调用ID上的取消链接,这将完全删除对象以及指向该对象的链接)
return {'value': {'resident_flat_rel_ids':[(2,individual.id) for individual in self.resident_flat_rel_ids]}}