Modelle:
class Region(models.Model):
name = models.CharField(max_length=255)
code = models.IntegerField()
class District(models.Model):
region = models.ForeignKey('Region', related_name='districts', on_delete=models.PROTECT)
name = models.CharField(max_length=255)
code = models.IntegerField()
Ansichten:
class RegionDelete(generics.DestroyAPIView):
queryset = Region.objects.all()
serializer_class = RegionSerializer
HTTP-Code 423 oder ein anderer.
Fehlerdetails.
Django-Ausnahme
Mischungen:
class DestroyModelMixin(object):
"""
Destroy a model instance.
"""
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
try:
self.perform_destroy(instance)
except django.db.models.deletion.ProtectedError as e:
return Response(status=status.HTTP_423_LOCKED, data={'detail':str(e)})
return Response(status=status.HTTP_204_NO_CONTENT)
def perform_destroy(self, instance):
instance.delete()
Sie müssen eine benutzerdefinierte Methode schreiben, um diesen Fall zu behandeln. Ich glaube nicht, dass es häufig genug ist, um die zusätzliche Komplexität zum Standardfall hinzuzufügen.
Dies kann mit nur ein paar Zeilen Code behoben werden. Frameworks sollen das Leben einfacher machen, daher denke ich, dass eine automatische Ausnahmebehandlung für das Löschen von Modellen hinzugefügt werden sollte.
Altes Thema, aber immer noch so relevant.
Aus meiner Sicht ist es sehr verbreitet und dient als entscheidender Bestandteil, um Ihre Datenbankintegrität zu erhalten.
Läuft auch darauf ein. Wäre sehr schön, wenn dies standardmäßig ohne 500-Fehler behandelt würde.
Hilfreichster Kommentar
Dies kann mit nur ein paar Zeilen Code behoben werden. Frameworks sollen das Leben einfacher machen, daher denke ich, dass eine automatische Ausnahmebehandlung für das Löschen von Modellen hinzugefügt werden sollte.