如何强制删除odoo中的记录表格行?

How to force remove records form lines in odoo?

在将分析帐户添加到供应商账单的日记项目时,帐户移动发生了一些错误,我需要循环帐户移动中的所有行,并通过这段代码从所有行中删除分析帐户

class NewModule(models.Model):
_inherit = 'account.move'

def analytic(self):
    all=self.env['account.move'].search([('type','=','in_invoice')])
    ana=all.line_ids.mapped('analytic_account_id')
    ana.unlink()

但是当使用此方法时 运行 我收到此错误 “操作无法完成:另一个模型需要删除记录。如果可能,请将其存档。 模型:解析线(account.analytic.line),约束:account_analytic_line_account_id_fkey”如下图

否则,如果尝试删除 UI 的分析帐户,它会毫无问题地删除,但账单太多,无法手动完成

任何帮助将不胜感激

您正在尝试删除 analytic_account 个对象。

您只想删除 m2m 连接。

all=self.env['account.move'].search([('type','=','in_invoice')])
all.write({'analytic_account_id':[(5, 0, 0)]})

应该是这样的。但是我没有测试。

这个方法对我有用

def analytic(self):    
self.env['account.move'].search([('type', 'in', ('out_invoice', 'in_invoice'))]).line_ids.write({'analytic_account_id':[(5, 0, 0)]})