Django-rest-framework: рдирд╖реНрдЯ рдХрд░реЗрдВAPIView рддреНрд░реБрдЯрд┐ рдЬрдм on_delete=models.PROTECT

рдХреЛ рдирд┐рд░реНрдорд┐рдд 25 рдЕрдкреНрд░реИрд▓ 2018  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: encode/django-rest-framework

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг

рдореЙрдбрд▓:

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()

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЗрд╕реЗ рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдлреНрд░реЗрдорд╡рд░реНрдХ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЙрдбрд▓ рдбрд┐рд▓реАрдЯ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдХрд╕реНрдЯрдо рд╡рд┐рдзрд┐ рд▓рд┐рдЦрдиреА рд╣реЛрдЧреАред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдорд╛рдирдХ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрдЯрд┐рд▓рддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдирд╛ рдХрд╛рдлреА рдЖрдо рд╣реИред

рдЗрд╕реЗ рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдлреНрд░реЗрдорд╡рд░реНрдХ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЙрдбрд▓ рдбрд┐рд▓реАрдЯ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкреБрд░рд╛рдирд╛ рдореБрджреНрджрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдУрд╣ рдЗрддрдирд╛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХред

рдореЗрд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдпрд╣ рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдЕрдЦрдВрдбрддрд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред

рдЗрд╕рдореЗрдВ рднреА рднрд╛рдЧ рд░рд╣реЗ рд╣реИрдВред 500 рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд┐рдирд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

MadWombat picture MadWombat  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

macropin picture macropin  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

orf picture orf  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

gabn88 picture gabn88  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kdzxiaoli picture kdzxiaoli  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ