Я написал на заказ FieldList
:
class EventForm(Form):
enabled = BooleanField()
user_role = IntegerField()
class EventsForm(Form):
user_roles = FieldList(FormField(EventForm))
section_name = StringField()
class CompanyForm(BaseForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._populate_event_permissions()
def _populate_event_permissions(self):
permissions = get_all_event_permissions()
for event, value in permissions.items():
form_field = self.event.append_entry(
data={'section_name': event})
field_1 = form_field.user_roles.append_entry(
data={'enabled': True, 'user_role': 8})
field_1.enabled.label.text = 'Participant'
field_1.enabled.name = value
field_2 = form_field.user_roles.append_entry(
data={'user_role': 9})
field_2.enabled.label.text = 'Organizer'
field_2.enabled.name = value
field_3 = form_field.user_roles.append_entry(
data={'user_role': 10})
field_3.enabled.label.text = 'Admin'
field_3.enabled.name = value
Рендерится красиво в шаблоне, но каждый раз, когда я пытаюсь отправить его, а флажки False
, он всегда отправляет True
, как в append_entry
. Вот как я проверяю свои входные данные.
class MyView(BaseModelView):
def on_model_change(self, form, model, is_created):
for section in form.event.entries:
for entry in section.user_roles.entries:
print(entry.enabled.data)
Похоже, что форма всегда отправляет default value
, независимо от того, установлен ли флажок True или False, я также определил предварительное заполнение формы, и если я вручную установил значение в базе данных на False, он правильно отобразит ввод как False, но когда я отправляю форму снова (независимо от того, какие статусы флажков) перезаписывает базу данных в True. Существует определенная проблема, что форма не видит отредактированные значения. Как я могу решить это?