Odoo8: Существует ли общий способ сбросить значение поля до его значения по умолчанию, если оно было скрыто на стороне формы?

Цель моей модели

Моя модель представляет собой справочную службу и содержит несколько полей в зависимости от заданного запроса. Когда пользователь выбирает свой запрос, появляются соответствующие поля об этом запросе.

Я использую отношение между логическим полем и соответствующим полем (одно логическое поле на каждое соответствующее поле). Другими словами, логические поля действуют как переключатели видимости соответствующих полей.

Когда логическое поле равно 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

С помощью этого метода я теперь уверен, что скрытые поля сбрасываются до значений по умолчанию, даже если они ранее были заполнены.

Как сказано в моем вопросе, я хотел бы знать, есть ли общий способ или лучше, чем мой, чтобы установить значение по умолчанию для каждого скрытого поля.


person Jankov_n    schedule 16.06.2017    source источник
comment
Что значит скрыто?   -  person George Daramouskas    schedule 16.06.2017
comment
@GeorgeDaramouskas Когда это не видно на стороне формы (веб-страница)   -  person Jankov_n    schedule 16.06.2017
comment
Вы можете установить новую настраиваемую группу в поле, чтобы это поле могло заполняться значением по умолчанию, а также быть невидимым для пользователей.   -  person Chavada Viki    schedule 17.06.2017
comment
У вас есть пример этого приложения @VikiChavada?   -  person Jankov_n    schedule 17.06.2017
comment
Да. позвольте мне написать в ответ.   -  person Chavada Viki    schedule 17.06.2017


Ответы (1)


Вам нужно создать одну группу, например, я создал одну группу, как показано ниже.

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

Затем вы можете добавить пользователей в ту группу, которой вы хотите показать это поле.

введите здесь описание изображения

Затем добавьте эту группу в поле, которое вы хотите скрыть.

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

Теперь это поле может видеть только пользователь с правами администратора.

person Chavada Viki    schedule 17.06.2017
comment
Я просто хочу сбросить значение по умолчанию, когда некоторые поля невидимы на стороне формы, а не между пользователями, потому что эти поля должны быть доступны для всех пользователей. Они скрыты только в зависимости от заданного запроса. - person Jankov_n; 17.06.2017
comment
Является ли это значение по умолчанию фиксированным для невидимого поля? - person Chavada Viki; 17.06.2017
comment
Собственно, я не могу вам сказать, потому что я не на работе :-(. В понедельник я опубликую ответ, если это работает (или нет). Но, как я сказал в своем предыдущем комментарии, вы ответили мне на мой вопрос в зависимости от пользователей, и я не знаю, сработает ли это для моей проблемы, которая не должна зависеть от пользователей. - person Jankov_n; 17.06.2017
comment
Я протестировал его, и он хорошо работает в вашем случае (видимость пользователей), но не в моем :-(. Кстати, я добавил больше информации в свой вопрос. - person Jankov_n; 20.06.2017