mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-04 12:30:11 +03:00
Merge 3ffe8dcfac
into 836e49b535
This commit is contained in:
commit
c8049b5ae9
|
@ -227,6 +227,20 @@ As with `ModelViewSet`, you'll normally need to provide at least the `queryset`
|
|||
|
||||
Again, as with `ModelViewSet`, you can use any of the standard attributes and method overrides available to `GenericAPIView`.
|
||||
|
||||
## MultiSerializerViewSet
|
||||
The `MultiSerializerViewSet` is an extension to the `ModelViewSet` which adds the possibility of using more than one serializer depending on the action currently taken. When the action is not found in the `serializers` dictionary, the provided default serializer will be used instead.
|
||||
|
||||
#### Example
|
||||
class UserGroupsViewSet(MultiSerializerViewSet):
|
||||
model = models.Groups
|
||||
|
||||
serializers = {
|
||||
'list': myserializers.GroupListSerializer,
|
||||
'detail': myserializers.GroupDetailSerializer,
|
||||
'default': serializers.HyperlinkedModelSerializer,
|
||||
}
|
||||
|
||||
|
||||
# Custom ViewSet 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.
|
||||
|
|
|
@ -154,3 +154,16 @@ class ModelViewSet(mixins.CreateModelMixin,
|
|||
`partial_update()`, `destroy()` and `list()` actions.
|
||||
"""
|
||||
pass
|
||||
|
||||
class MultiSerializerViewSet(ModelViewSet):
|
||||
"""
|
||||
A ModelViewSet which allows to use different serializers according to
|
||||
the currently taken action.
|
||||
"""
|
||||
serializers = {
|
||||
'default': None,
|
||||
}
|
||||
|
||||
def get_serializer_class(self):
|
||||
return self.serializers.get(self.action,
|
||||
self.serializers['default'])
|
||||
|
|
Loading…
Reference in New Issue
Block a user