【问题标题】:Flask Wtform calling both FieldList and FormField validate() causes errorFlask Wtform 调用 FieldList 和 FormField validate() 导致错误
【发布时间】:2016-02-12 10:46:07
【问题描述】:

所以我有这个代码

class ItemPurchaseForm(wtforms.Form):
    purchase_price = IntegerField(label='Purchase Price: ',
                                  validators=[InputRequired()])

    def validate(self, *args, **kwargs):
        if not super().validate():
            self.purchase_price.errors += (super().errors,)
            return False
        #.... do other validations....

class PurchaseTransactionForm(Form):
    yyyy = IntegerField(label='Transaction Year',
                        validators=[InputRequired()])

    transaction_items = FieldList(FormField(ItemPurchaseForm),
                                  label='Purchased items',
                                  min_entries=1)
    submit_button = SubmitField(label='Add new purchase transaction')

    def validate(self, **kwargs):

        if not super().validate():
            self.yyyy.errors += (super().errors, 'super not validated')
            return False

         #.... do some other validation

如您所见,有一个FieldList(FormField(...)),所以我按照这个answer 来修复以前由CRSF 字段引起的错误。现在如果我在ItemPurchaseForm 中有def validate(),它会给我错误,错误就是:{'transaction_items': [{}]}

如果我从ItemPurhcaseForm 中删除def validate(),一切正常。有什么原因导致错误吗?我确实读过这个http://wtforms.readthedocs.org/en/latest/fields.html#wtforms.fields.Field.validate,那么这是否意味着ItemPurchaseForm 是一个子字段?

【问题讨论】:

    标签: python validation flask wtforms flask-wtforms


    【解决方案1】:

    我知道问题并已解决问题。我只是忘了把return True 放入ItemPurchaseForm validate()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-22
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 2015-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多