我正在构建一个允许管理员用户向数据库添加“问题”的系统。每种类型的问题都有一个与之相关联的WTForms对象。为了显示一个页面,我遍历所有问题并为每个问题生成一个由表单字段组成的表单。在
class TextQuestionForm(Form):
value = TextField("Value", validators=[])
class Question(db.Model):
# sqlAlchemy model using single table inheritance
def field_name(self):
return "question_%s" % self.id
class TextQuestion(Question):
form = TextQuestionForm
def get_form(page_id):
questions = Question.query.filter(Question.page_id == page_id).all()
class F(Form):
pass
for q in questions:
setattr(F, q.field_name(), FormField(q.form))
return F()
对于给定问题类型的所有验证都相同的简单情况,这很有效,但我需要为Question
的每个实例提供可配置的验证选项,例如,假设我的问题模型被扩展:
如果每个问题的最小/最大长度不同(或缺失),那么将WTForms长度验证器设置到我的表单字段中的value
字段的合适方法是什么?在
完全控制验证 您可以创建继承
TextField
的自定义字段 并重新定义pre_validate
方法在这个函数里你可以做所有你想要的检查
http://wtforms.simplecodes.com/docs/0.6/fields.html#wtforms.fields.Field.pre_validate
相关问题 更多 >
编程相关推荐