【发布时间】:2018-06-29 20:13:23
【问题描述】:
我有一个表单,在视图中动态添加了几个整数字段,这些字段供用户从 1 到 N 进行排名。我很难弄清楚如何编写一个可以确保到达 field.data 具有唯一值并且从 1 到 N 的验证器。
我已经弄清楚如何根据wtforms' docs 动态地将字段添加到表单中,但我想像this question 一样对它们进行相互验证,但我还没有弄清楚如何正确引用动态被覆盖的validate 函数中的字段。
如何在验证器中引用表单实例中的动态字段?在上面链接的问题中,他们按照以下方式进行:
for field in [self.select1, self.select2, self.select3]:
但由于我使用setattr 动态添加这些字段,因此我不知道这些字段名称。我尝试在表单中添加一个列表变量,并在添加动态字段时附加到该列表中,但它们显示为:
<UnboundField(IntegerField, ('first',), {'validators': [<wtforms.validators.DataRequired object at 0x7ff75a6d7390>]})>
如果我在上面的示例中引用像 select1 这样的字段,而不仅仅是 IntegerFields:
<wtforms.fields.core.IntegerField object at 0x7fac1bd54910>
如何引用和验证这些动态添加到表单中的整数字段?
【问题讨论】:
标签: python validation flask wtforms flask-wtforms