Odoo8:当一个字段隐藏在表单端时,有一种通用的方法可以将字段重置为默认值吗?

时间:2017-06-16 10:07:13

标签: odoo odoo-8 odoo-view

我的模特的目的

我的模型是一个帮助台,它包含几个字段,具体取决于询问的请求。当用户选择他的请求时,会出现有关此请求的相关字段。

我使用布尔字段和相关字段之间的关系(每个相关字段一个布尔字段)。换句话说,布尔字段的作用类似于相关字段的可见性切换。

当布尔字段为True时,相关字段可见。否则,该字段是不可见的。

我的问题

如果用户想要更改请求,但他先前填写了先前请求的字段,则先前的字段(其中一些必须是不可见的)仍然获得用户输入的值。如果这些不可见的字段仍然具有与其默认值不同的值,则无法完成所请求的请求。

我如何避免此问题

实际上,我已经创建了一个状态表(布尔表),它对应于必须出现(或不出现)的每个字段的可见性,具体取决于所请求的请求。

因此,如果用户选择了一个请求,此时,我通过将状态表的相应布尔值分配给布尔字段来设置字段的可见性。

def change_states_of_visibility(self):
    boolean_field_1 = False
    boolean_field_2 = True
    # Other assignation values to boolean fields

一旦设置了可见性,我就用方法设置每个字段(有关与否)的默认值。

# When the field has been hidden for some reason
def reset_to_default_value_every_fields(self)
    my_field = default_value
    # Other fields set to default Value

使用这种方法,我现在可以确定隐藏字段会重置为默认值,即使它们之前已被填充过。

正如我的问题所说,我想知道是否有一种通用方式或者实际上比我更好,将每个隐藏字段设置为默认值。

1 个答案:

答案 0 :(得分:0)

您需要创建一个组,例如,我创建了一个组,如下所示。

<record id = "group_admin_only" model="res.groups">
            <field name="name">Show to admin only</field>
  </record>

然后,您可以在该组中添加要向其显示该字段的用户。

enter image description here

然后将此组添加到您要隐藏的字段中。

<field name="any_field" groups="your_module.group_admin_only"/>

现在,只有管理员用户才能看到此字段。