<style>
.promo li a {
    float: left;
    width: 130px;
    height: 20px;
    text-align: center;
    margin: 10px 30px;
    padding: 150px 0 0 0;
    background-position: 0 50%;
    background-size: 130px auto;
    background-repeat: no-repeat;
    font-size: 120%;
    color: black;
}
.promo li {
    list-style: none;
}
</style>

# 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.