对复选框使用的odoo9onchange方法在edit mod中无法正常工作

2024-06-14 16:47:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我在checkbox上使用了Onchange方法,并将其行为设置为在更改checkbox的状态时删除字段值。Onchange方法在更改checkbox的状态时触发,工作正常。但当我编辑表单视图并保存更改时,该字段先前保存的数据在通过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

它在create状态下可以正常工作,但是当我编辑表单时,它也可以在编辑模式下工作,但是当我保存表单时,该字段的先前值出现在视图中,在编辑模式下,这个值被Onchange方法设置为False(null)。在


Tags: 数据方法self视图false编辑表单is
1条回答
网友
1楼 · 发布于 2024-06-14 16:47:55

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

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

显然,这个功能是在odoo版本11中添加的,之前版本模块可以从OCA获得以绕过只读限制。对于odoo版本9,请检查module。在

相关问题 更多 >