aboutsummaryrefslogtreecommitdiffstats
path: root/docs/api-guide/viewsets.md
diff options
context:
space:
mode:
authorTom Christie2013-05-09 13:31:42 +0100
committerTom Christie2013-05-09 13:31:42 +0100
commit31f94ab409f1d5f41982a5946b980cf3ad8e3ba9 (patch)
tree3b5f65e21eb0d177578ae760a46fe8eda1f6277f /docs/api-guide/viewsets.md
parentf2466418dd325ed1353d4e0056411c16e96c2073 (diff)
downloaddjango-rest-framework-31f94ab409f1d5f41982a5946b980cf3ad8e3ba9.tar.bz2
Added GenericViewSet and docs tweaking
Diffstat (limited to 'docs/api-guide/viewsets.md')
-rw-r--r--docs/api-guide/viewsets.md25
1 files changed, 16 insertions, 9 deletions
diff --git a/docs/api-guide/viewsets.md b/docs/api-guide/viewsets.md
index d98f37d8..e354a43a 100644
--- a/docs/api-guide/viewsets.md
+++ b/docs/api-guide/viewsets.md
@@ -136,9 +136,15 @@ The `ViewSet` class inherits from `APIView`. You can use any of the standard at
The `ViewSet` class does not provide any implementations of actions. In order to use a `ViewSet` class you'll override the class and define the action implementations explicitly.
+## GenericViewSet
+
+The `GenericViewSet` class inherits from `GenericAPIView`, and provides the default set of `get_object`, `get_queryset` methods and other generic view base behavior, but does not include any actions by default.
+
+In order to use a `GenericViewSet` class you'll override the class and either mixin the required mixin classes, or define the action implementations explicitly.
+
## ModelViewSet
-The `ModelViewSet` class inherits from `GenericAPIView` and includes implementations for various actions, by mixing in the behavior of the
+The `ModelViewSet` class inherits from `GenericAPIView` and includes implementations for various actions, by mixing in the behavior of the various mixin classes.
The actions provided by the `ModelViewSet` class are `.list()`, `.retrieve()`, `.create()`, `.update()`, and `.destroy()`.
@@ -188,17 +194,18 @@ Again, as with `ModelViewSet`, you can use any of the standard attributes and me
# Custom ViewSet base classes
-Any standard `View` class can be turned into a `ViewSet` class by mixing in `ViewSetMixin`. You can use this to define your own base classes.
+You may need to provide custom `ViewSet` classes that do not have the full set of `ModelViewSet` actions, or that customize the behavior in some other way.
## Example
-For example, we can create a base viewset class that provides `retrieve`, `update` and `list` operations:
+To create a base viewset class that provides `create`, `list` and `retrieve` operations, inherit from `GenericViewSet`, and mixin the required actions:
+
+ class CreateListRetrieveViewSet(mixins.CreateMixin,
+ mixins.ListMixin,
+ mixins.RetrieveMixin,
+ viewsets.GenericViewSet):
+ pass
- class RetrieveUpdateListViewSet(mixins.RetrieveModelMixin,
- mixins.UpdateModelMixin,
- mixins.ListModelMixin,
- viewsets.ViewSetMixin,
- generics.GenericAPIView):
"""
A viewset that provides `retrieve`, `update`, and `list` actions.
@@ -207,6 +214,6 @@ For example, we can create a base viewset class that provides `retrieve`, `updat
"""
pass
-By creating your own base `ViewSet` classes, you can provide common behavior that can be reused in multiple views across your API.
+By creating your own base `ViewSet` classes, you can provide common behavior that can be reused in multiple viewsets across your API.
[cite]: http://guides.rubyonrails.org/routing.html