# Django REST framework 3.14 ## Django 4.1 support The latest release now fully supports Django 4.1, and drops support for Django 2.2. Our requirements are now: * Python 3.6+ * Django 4.1, 4.0, 3.2, 3.1, 3.0 ## `raise_exception` argument for `is_valid` is now keyword-only. Calling `serializer_instance.is_valid(True)` is no longer acceptable syntax. If you'd like to use the `raise_exception` argument, you must use it as a keyword argument. See Pull Request [#7952](https://github.com/encode/django-rest-framework/pull/7952) for more details. ## `ManyRelatedField` supports returning the default when the source attribute doesn't exist. Previously, if you used a serializer field with `many=True` with a dot notated source field that didn't exist, it would raise an `AttributeError`. Now it will return the default or be skipped depending on the other arguments. See Pull Request [#7574](https://github.com/encode/django-rest-framework/pull/7574) for more details. ## Make Open API `get_reference` public. Returns a reference to the serializer component. This may be useful if you override `get_schema()`. ## Change semantic of OR of two permission classes. When OR-ing two permissions, the request has to pass either class's `has_permission() and has_object_permission()`. Previously, both class's `has_permission()` was ignored when OR-ing two permissions together. See Pull Request [#7522](https://github.com/encode/django-rest-framework/pull/7522) for more details. ## Minor fixes and improvements There are a number of minor fixes and improvements in this release. See the [release notes](release-notes.md) page for a complete listing. --- ## Deprecations ### `serializers.NullBooleanField` `serializers.NullBooleanField` was moved to pending deprecation in 3.12, and deprecated in 3.13. It has now been removed from the core framework. Instead use `serializers.BooleanField` field and set `allow_null=True` which does the same thing.