mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-30 01:49:50 +03:00
Improve documentation regarding serializer class on extra actions.
The documentation does currently not describe how to use a custom `serializer_class` with extra actions. The example uses a custom serializer without using the seralizer_class attribute, resulting in the generated documentation page presenting the wrong form. The author of the feature described the usage of the `serializer_class` kwarg in his pr #5605: https://github.com/encode/django-rest-framework/pull/5605#issuecomment-345420265
This commit is contained in:
parent
271c4c5920
commit
963607a184
|
@ -129,6 +129,11 @@ You may inspect these attributes to adjust behaviour based on the current action
|
|||
|
||||
If you have ad-hoc methods that should be routable, you can mark them as such with the `@action` decorator. Like regular actions, extra actions may be intended for either a single object, or an entire collection. To indicate this, set the `detail` argument to `True` or `False`. The router will configure its URL patterns accordingly. e.g., the `DefaultRouter` will configure detail actions to contain `pk` in their URL patterns.
|
||||
|
||||
Your custom action may use a different [Serializer class](serializers.md). To make sure that the generated docs display a form which matches your serializer, you have two options:
|
||||
|
||||
* Either: provide a `serializer_class=MySerializer` argument to the `@action()` decorator (see example below)
|
||||
* Or: override the `get_serializer_class()` method as described in [GenericAPIView](generic-views.md#genericapiview)
|
||||
|
||||
A more complete example of extra actions:
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
|
@ -144,7 +149,7 @@ A more complete example of extra actions:
|
|||
queryset = User.objects.all()
|
||||
serializer_class = UserSerializer
|
||||
|
||||
@action(detail=True, methods=['post'])
|
||||
@action(detail=True, methods=['post'], serializer_class=PasswordSerializer)
|
||||
def set_password(self, request, pk=None):
|
||||
user = self.get_object()
|
||||
serializer = PasswordSerializer(data=request.data)
|
||||
|
|
Loading…
Reference in New Issue
Block a user