| 123456789101112131415161718192021222324252627282930 |
- from rest_framework.exceptions import APIException
- from rest_framework.serializers import ModelSerializer
- WRITE_OPERATIONS = ['create', 'update', 'partial_update', 'delete']
- class ServiceUnavailable(APIException):
- status_code = 503
- default_detail = "Service temporarily unavailable, please try again later."
- class WritableSerializerMixin(object):
- """
- Returns a flat Serializer from the given model suitable for write operations (POST, PUT, PATCH). This is necessary
- to allow write operations on objects which utilize nested serializers.
- """
- def get_serializer_class(self):
- class WritableSerializer(ModelSerializer):
- class Meta:
- model = self.get_queryset().model
- fields = '__all__'
- if self.action in WRITE_OPERATIONS:
- return WritableSerializer
- return self.serializer_class
|