how to display serializer in delete action with django rest swagger

945 Views Asked by At

By default, django rest swagger doesn't displayed the Serializer in DELETE method. But, for some reason I need to implement prevent deletion & force deletion case.

So, basicly to implement it, we need to add e.g this example inside the request body:

{
  "forceDelete": true
}

I'm trying to update the serializer inside get_serializer_class function, but it still doesn't work properly.

class ForceDeleteSerializer(serializers.Serializer):
    force_delete = serializers.BooleanField(default=False)


class GroupViewSet(ModelViewSet):
    permission_classes = (IsOrganizationAdmin,)
    serializer_class = GroupSerializer
    search_fields = ('display_name',)

    def get_serializer_class(self):
        if self.action == 'destroy':
            return ForceDeleteSerializer
        return self.serializer_class

delete action

1

There are 1 best solutions below

0
binpy On

Finally, as suggested by @LinhNguyen to use drf-yasg, and using swagger_auto_schema it worked.

from drf_yasg.utils import swagger_auto_schema

@swagger_auto_schema(request_body=ForceDeleteSerializer)
def destroy(self, request, *args, **kwargs):
    ....

preview