The DRF docs mention this:
Note that when using viewsets the basic docstring is used for all generated views. To provide descriptions for each view, such as for the the list and retrieve views, use docstring sections as described in Schemas as documentation: Examples.
But the link is bad, and the similar link, https://www.django-rest-framework.org/api-guide/schemas/, doesn't mention these "sections."
How do I distinctly document my different possible REST actions within my single Viewset when it is composed like,
class ViewSet(mixins.ListModelMixin,
mixins.RetrieveModelMixin,
mixins.CreateModelMixin,
mixins.UpdateModelMixin,
):
APIView allow us to define functions that match standard HTTP methods like GET, POST, PUT, PATCH, etc. Viewsets allow us to define functions that match to common API object actions like : LIST, CREATE, RETRIEVE, UPDATE, etc.
Django REST framework allows you to combine the logic for a set of related views in a single class, called a ViewSet . In other frameworks you may also find conceptually similar implementations named something like 'Resources' or 'Controllers'.
The root QuerySet provided by the Manager describes all objects in the database table. Usually, though, you'll need to select only a subset of the complete set of objects. The default behavior of REST framework's generic list views is to return the entire queryset for a model manager.
Resource routing allows you to quickly declare all of the common routes for a given resourceful controller. Instead of declaring separate routes for your index... a resourceful route declares them in a single line of code.
I came here from Google after spending ages tracking this down. There is indeed a special formatting of the docstring to document individual methods for ViewSets.
The relevant example must have been removed from the documentation at some point but I was able to track this down in the source. It is handled by the function get_description
in https://github.com/encode/django-rest-framework/blob/master/rest_framework/schemas/coreapi.py
The docstring format is based on the action names (if view.action is defined):
"""
General ViewSet description
list: List somethings
retrieve: Retrieve something
update: Update something
create: Create something
partial_update: Patch something
destroy: Delete something
"""
If view.action is not defined, it falls back to the method name: get
, put
, patch
, delete
.
Each new section begins with a lower case HTTP method name followed by colon.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With