我在复选框上使用了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(空)模式。
答案 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。