【发布时间】: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