Odoo:当many2one字段更改时,如何清除many2many字段?

问题描述

我是odoo的新手。我正在使用odoo 13,我有一个many2one字段和一个many2many字段,并且在many2one字段上具有域。 我需要的是,如果用户更改了many2one字段,many2many将变空并可以选择。 但是我不知道如何在函数上编写代码,所以我尝试了一些变体,但是我没有想到。 如果使用此功能,则当我第一次选择“工业”字段时,我会得到一个错误

class Partner(models.Model):
    _inherit = 'res.partner'
    industria = fields.Many2one('industria_model',string="Industria")
    marca = fields.Many2many('marca_model',domain="[('industria_id','=',industria)]",string="marca")

    @api.onchange('industria')
    def get_price(self):
        self.marca = [(5)]
        # if self.marca:
        #     self.marca = [(5,0)]

解决方法

[(5)]将被评估为[5],然后Odoo将尝试返回尚未创建的对应记录(第一次),并且您应该看到以下错误:

Record does not exist or has been deleted. (Record: marca_model(5,),

您可以简单地使用[(5,)]来清空marca字段。

如果数据库中存在ID为5的记录,您将获得与使用[(4,5)]

相同的结果 ,

最后我用了这个

@api.onchange('industria')
    def change_brand(self):
        self.marca = [(6,[])]

我已经对其进行了测试,但是我不得不重新启动odoo才能看到所做的更改,只是更新模块无法正常工作