Цель моей модели
Моя модель представляет собой справочную службу и содержит несколько полей в зависимости от заданного запроса. Когда пользователь выбирает свой запрос, появляются соответствующие поля об этом запросе.
Я использую отношение между логическим полем и соответствующим полем (одно логическое поле на каждое соответствующее поле). Другими словами, логические поля действуют как переключатели видимости соответствующих полей.
Когда логическое поле равно 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
С помощью этого метода я теперь уверен, что скрытые поля сбрасываются до значений по умолчанию, даже если они ранее были заполнены.
Как сказано в моем вопросе, я хотел бы знать, есть ли общий способ или лучше, чем мой, чтобы установить значение по умолчанию для каждого скрытого поля.