wtforms具有多个字段类型的动态表单

时间:2014-07-30 15:31:26

标签: wtforms flask-wtforms

我正在从我的数据库中动态创建我的wtforms。

def create_form_field_class(fields):
   form_fields = {}
   for i in fields:
       field_id = i.name
       form_fields[field_id] = TextField(label=i.label, validators=[Optional()])
   return type('Form', (Form,), form_fields)

目前,所有字段类型都是" TextField"。由于我也有我的数据库中存储的字段类型(BooleanField,TextAreaField等...),我还想动态设置它。

form_fields[field_id] = ???i.type???(label=i.label, validators=[Optional()])

必须有一个快速的方法来做到这一点。

1 个答案:

答案 0 :(得分:0)

好的,我解决这个问题的方式是。

import wtforms

def create_form_field_class(fields):
   form_fields = {}
   for i in fields:
       field_id = i.name
       form_fields[field_id] = getattr(wtforms, str(i.type))(label=i.label, validators=[Optional()])
   return type('Form', (Form,), form_fields)

我想知道是否有更好的方法。