diff --git a/beat/web/team/api.py b/beat/web/team/api.py
index f0defc8fae83d7856db4301189990caf020e7fa7..69a74de5a0f481ce487c680c89b4c592a738535b 100644
--- a/beat/web/team/api.py
+++ b/beat/web/team/api.py
@@ -32,8 +32,8 @@ from django.db.models import Q
 from rest_framework import generics
 from rest_framework import permissions
 from rest_framework.response import Response
-from rest_framework import status
 from rest_framework.reverse import reverse
+from rest_framework import exceptions as drf_exceptions
 
 from .serializers import FullTeamSerializer
 from .serializers import SimpleTeamSerializer
@@ -42,7 +42,7 @@ from .serializers import TeamUpdateSerializer
 from .models import Team
 from .permissions import IsOwner, HasPrivacyLevel
 
-from ..common.responses import BadRequestResponse, ForbiddenResponse
+from ..common.responses import BadRequestResponse
 from ..common.mixins import CommonContextMixin
 
 
@@ -122,18 +122,13 @@ class TeamDetailView(CommonContextMixin, generics.RetrieveUpdateDestroyAPIView):
         context["user"] = self.request.user
         return context
 
-    def delete(self, request, owner_name, team_name):
-        team = self.get_object()
-
-        # Check that the team can still be deleted
-        if not (team.deletable()):
-            return ForbiddenResponse(
+    def perform_destroy(self, instance):
+        if not instance.deletable():
+            raise drf_exceptions.PermissionDenied(
                 "The team isn't deletable (it has been used to share %d objects with its members)"
-                % team.total_shares()
+                % instance.total_shares()
             )
-
-        team.delete()
-        return Response(status=status.HTTP_204_NO_CONTENT)
+        return super().perform_destroy(instance)
 
     def update(self, request, owner_name, team_name):
         team = self.get_object()