复选框上使用的Odoo 9 Onchange方法在编辑模式下无法正常工作

时间:2019-02-10 05:25:29

标签: python odoo

我在复选框上使用了Onchange方法,并将其行为设置为在更改复选框状态时删除字段值。 Onchange方法触发更改复选框的状态,并且工作正常。但是,当我编辑表单视图并保存更改时,通过Onchange方法更改字段数据后,该字段先前保存的数据仍会出现,而应通过Onchange方法清除。 这是我在复选框上使用的onchange方法,用于删除处于不同状态的字段值:

@api.onchange('is_military')
    def onchange_is_military_checked(self):
        if self.is_military:
            self.unit_identificatin_code_id = False
        else:
            self.organization = False

它在创建状态下可以正常工作,但是当我编辑表单时,它也可以在编辑模式下工作,但是当我保存表单时,该字段的上一个值出现在视图中,该字段的值在编辑时通过Onchange方法设置为False(空)模式。

1 个答案:

答案 0 :(得分:0)

@api.onchange方法在表单视图级别上起作用,每当在编辑模式下更改字段值时,触发该字段的onchange方法,就可以在该函数中更改某些其他字段的值。但是,例如,在这种情况下,如果在表单视图中以onachange方法更改的字段是readonly/invisible,则在unit_identificatin_code_id, organization的情况下,保存表单实际上不会将更改保存到该字段。在这种情况下,有一个简单的解决方法,请在这些字段上使用属性force_save = 1以确保即使表单视图中的该字段为readonly/invisible,也必须将对此字段的任何更改保存在数据库中。 / p>

<field name="unit_identificatin_code_id" ... ... force_save="1" />
<field name="organization" ... ... force_save="1" />

显然,此功能已添加到odoo版本11中,然后该版本模块可以从OCA绕过只读限制。对于odoo版本9,请检查此module