代码之家  ›  专栏  ›  技术社区  ›  washer

如何使用自定义验证器向表单动态添加输入字段?

  •  1
  • washer  · 技术社区  · 7 年前

    我有一个表单,在视图中动态添加了几个整数字段,这些字段供用户从1-N排序。我很难想出如何编写一个验证程序来确保到达字段。数据具有唯一值,从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 在上述示例中:

    <wtforms.fields.core.IntegerField object at 0x7fac1bd54910>
    

    如何将这些动态添加到表单中的整数字段一起引用和验证?

    1 回复  |  直到 7 年前
        1
  •  0
  •   washer    7 年前

    结果发现在 WTForms documentation ,我应该使用字段列表。甚至比这更好的是,我可以使用FieldList来封装FieldForms列表,这为动态添加字段提供了更多的灵活性。