【发布时间】:2019-06-12 11:46:01
【问题描述】:
我已经写了自定义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,无论复选框是真还是假,我还定义了表单预填充,如果我手动将数据库中的值设置为 False,它会将输入正确呈现为 False,但是当我发送表单时再次(无论复选框状态是什么)它会将数据库覆盖为 True。表单看不到编辑值肯定存在问题。我该如何解决?
【问题讨论】:
标签: flask flask-wtforms wtforms flask-admin