ΠΌΠΎΠ΄Π΅Π»ΠΈ:
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()
ΠΡΠΎΡΠΌΠΎΡΡΡ:
class RegionDelete(generics.DestroyAPIView):
queryset = Region.objects.all()
serializer_class = RegionSerializer
HTTP-ΠΊΠΎΠ΄ 423 ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ.
ΠΠ΅ΡΠ°Π»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Django
ΠΌΠΈΠΊΡΠΈΠ½Ρ:
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()
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ. Π― Π½Π΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ°Π²Π΄Π°ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌΡ ΡΠ»ΡΡΠ°Ρ.
ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ°ΡΡ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°. Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΆΠΈΠ·Π½Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ.
Π‘ΡΠ°ΡΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π½ΠΎ Π²ΡΠ΅ Π΅ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΡΠ½Π°Ρ.
Π‘ ΠΌΠΎΠ΅ΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΎ ΠΈ ΠΈΠ³ΡΠ°Π΅Ρ Π²Π°ΠΆΠ½ΡΡ ΡΠΎΠ»Ρ Π² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΠΈ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ Π²Π°ΡΠ΅ΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
Π’ΠΎΠΆΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ Ρ ΡΡΠΈΠΌ. ΠΡΠ»ΠΎ Π±Ρ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ ΡΡΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π»ΠΎΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±Π΅Π· ΠΎΡΠΈΠ±ΠΊΠΈ 500.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ°ΡΡ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°. Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΆΠΈΠ·Π½Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ.