WTForms validators.optional: continue validation of empty fields?

lecodesportif picture lecodesportif · Apr 1, 2011 · Viewed 8k times · Source

I have a problem with WTForms validators.optional() because it stops the validation chain if the field is empty (WTForms docs). This means that the validation does not continue with custom functions, which can result in type errors.

Code example:

class MyForm(form):
    myfield = TextField('My Field', [validators.Optional()])

    def validate_myfield(form, field):
        field.data = unicode(field.data)

Is there any way or workaround to continue the validation chain even if the optional content is empty, maybe using custom validators?

If I am approaching the problem in the wrong way, a hint at the right direction would be helpful!

Answer

dagoof picture dagoof · Apr 6, 2011

You could just change the order in which your validators are listed. If your custom validators are placed before the optional validator it should provide the desired effect as they're evaluated in order.