Skip to content Skip to sidebar Skip to footer

Different Validation In Drf Serializer Per Request Method

Lets say i have a model like so: class MyModel(models.Model): first_field = models.CharField() second_field = models.CharField() and an API view like so: class MyModelDeta

Solution 1:

I need more space than comments provide to make my meaning clear. So here is what I suggest:

  1. Different formatting means different serializers.

    So here you have, for instance a MyModelSerializer and a MyModelCreationSerializer. Either create them independently, or have one inherit the other and specialize it (if it makes sense).

  2. Use the appropriate GenericAPIView hook to return the correct serializer class depending on self.action. A very basic example could be:

    classMyModelDetailAPI(GenericAPIView):# serializer_class = unneeded as we override the hook belowdefget_serializer_class(self):
            ifself.action == 'create':
                return MyModelCreationSerializer 
            return MyModelSerializer
    

    Default actions in regular viewsets are documented here, they are:

    • create: POST method on base route url
    • list: GET method on base route url
    • retrieve: GET method on object url
    • update: PUT method on object url
    • partial_update: PATCH method on object url
    • destroy: DELETE method on object url

Post a Comment for "Different Validation In Drf Serializer Per Request Method"