- Drop support for Python < 3.6. #554
fields.StringFieldsets data to None when form data is empty and an initial value was not provided. Although it previously set an empty string, None is consistent with the behavior of other fields. #355- Specified version of Babel required for setup to avoid errors. #430
- Replaced use of getattr/setattr with regular variable access. #482
ValueErrorraised by a validator are handled like regular exceptions. Validators need to raisevalidators.ValidationErrororvalidators.StopValidationto make a validation fail. #445fields.SelectField,fields.SelectMultipleFieldandfields.RadioFieldchoices parameter can be a callable. #608- Choices shortcut for
fields.core.SelectMultipleField. #603 #605 - Forms can have form-level errors. #55 #595
- Implemented
fields.core.MonthField. #530 #593 - Filters can be inline.
form.BaseForm.processtakes a extra_filters parameter. #128 #592 - Fields can be passed the name argument to use a HTML name different than their Python name. #205, #601
- Render attribute names like for_ and class_ are normalized consistently so later values override those specified earlier. #449, #596
- Flags can take non-boolean values. #406 #467
- Widgets are HTML5 by default. #594 #614
- Fixed a bug when the
fields.core.SelectFieldchoices are list of strings. #598 - Error messages standardization. #613 #620 #626 #627
fields.core.SelectMultipleFieldvalidate_choice bugfix. #606 #642- Fixed SelectMultipleField validation when using choices list shortcut. #612 #661