mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-23 01:57:00 +03:00
041b88f8bb
* Improve style, fix some typos * Update docs/api-guide/fields.md Co-authored-by: Tom Christie <tom@tomchristie.com> Co-authored-by: Tom Christie <tom@tomchristie.com>
98 lines
3.6 KiB
Markdown
98 lines
3.6 KiB
Markdown
<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.8
|
|
|
|
The 3.8 release is a maintenance focused release resolving a large number of previously outstanding issues and laying
|
|
the foundations for future changes.
|
|
|
|
---
|
|
|
|
## Funding
|
|
|
|
If you use REST framework commercially and would like to see this work continue, we strongly encourage you to invest in its continued development by
|
|
**[signing up for a paid plan][funding]**.
|
|
|
|
|
|
*We'd like to say thanks in particular our premium backers, [Rover](https://www.rover.com/careers/), [Sentry](https://sentry.io/welcome/), [Stream](https://getstream.io/?utm_source=drf&utm_medium=banner&utm_campaign=drf), [Machinalis](https://machinalis.com/), and [Rollbar](https://rollbar.com).*
|
|
|
|
---
|
|
|
|
## Breaking Changes
|
|
|
|
### Altered the behaviour of `read_only` plus `default` on Field.
|
|
|
|
[#5886][gh5886] `read_only` fields will now **always** be excluded from writable fields.
|
|
|
|
Previously `read_only` fields when combined with a `default` value would use the `default` for create and update
|
|
operations. This was counter-intuitive in some circumstances and led to difficulties supporting dotted `source`
|
|
attributes on nullable relations.
|
|
|
|
In order to maintain the old behaviour you may need to pass the value of `read_only` fields when calling `save()` in
|
|
the view:
|
|
|
|
def perform_create(self, serializer):
|
|
serializer.save(owner=self.request.user)
|
|
|
|
Alternatively you may override `save()` or `create()` or `update()` on the serializer as appropriate.
|
|
|
|
---
|
|
|
|
## Deprecations
|
|
|
|
### `action` decorator replaces `list_route` and `detail_route`
|
|
|
|
[#5705][gh5705] `list_route` and `detail_route` have been merge into a single `action` decorator. This improves viewset action introspection, and will allow extra actions to be displayed in the Browsable API in future versions.
|
|
|
|
Both `list_route` and `detail_route` are now pending deprecation. They will be deprecated in 3.9 and removed entirely
|
|
in 3.10.
|
|
|
|
The new `action` decorator takes a boolean `detail` argument.
|
|
|
|
* Replace `detail_route` uses with `@action(detail=True)`.
|
|
* Replace `list_route` uses with `@action(detail=False)`.
|
|
|
|
|
|
### `exclude_from_schema`
|
|
|
|
Both `APIView.exclude_from_schema` and the `exclude_from_schema` argument to the `@api_view` decorator are now deprecated. They will be removed entirely in 3.9.
|
|
|
|
For `APIView` you should instead set a `schema = None` attribute on the view class.
|
|
|
|
For function based views the `@schema` decorator can be used to exclude the view from the schema, by using `@schema(None)`.
|
|
|
|
---
|
|
|
|
## Minor fixes and improvements
|
|
|
|
There are a large number of minor fixes and improvements in this release. See the [release notes](release-notes.md) page
|
|
for a complete listing.
|
|
|
|
|
|
## What's next
|
|
|
|
We're currently working towards moving to using [OpenAPI][openapi] as our default schema output. We'll also be revisiting our API documentation generation and client libraries.
|
|
|
|
We're doing some consolidation in order to make this happen. It's planned that 3.9 will drop the `coreapi` and `coreschema` libraries, and instead use `apistar` for the API documentation generation, schema generation, and API client libraries.
|
|
|
|
[funding]: funding.md
|
|
[gh5886]: https://github.com/encode/django-rest-framework/issues/5886
|
|
[gh5705]: https://github.com/encode/django-rest-framework/issues/5705
|
|
[openapi]: https://www.openapis.org/
|