des modèles:
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()
vues :
class RegionDelete(generics.DestroyAPIView):
queryset = Region.objects.all()
serializer_class = RegionSerializer
Code HTTP 423 ou autre.
Détail de l'erreur.
Exception Django
mélanges :
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()
Vous devrez écrire une méthode personnalisée pour gérer ce cas. Je ne pense pas que ce soit assez courant pour justifier l'ajout de la complexité supplémentaire au cas standard.
Cela peut être corrigé avec seulement quelques lignes de code. Les frameworks sont censés faciliter la vie, je pense donc que la gestion automatique des exceptions pour la suppression de modèle devrait être ajoutée.
Vieux problème, mais toujours aussi pertinent.
De mon point de vue, c'est très courant et c'est un élément crucial pour maintenir l'intégrité de votre base de données.
Courir dans cela aussi. Ce serait très bien que cela soit géré par défaut sans erreur 500.
Commentaire le plus utile
Cela peut être corrigé avec seulement quelques lignes de code. Les frameworks sont censés faciliter la vie, je pense donc que la gestion automatique des exceptions pour la suppression de modèle devrait être ajoutée.