예를 들어서 특정 인스턴스를 삭제하려고할때, 조건을 통과하지 못한 인스턴스는 삭제가 불가능하게 하려고 한다.
이런 경우에 destory
를 오버라이드해서 커스텀해야하는데 요청에서 데이터를 끌어와야 한다.
이런 경우에는 get_object()
를 활용할 수 있다.
def TestViewSet(ModelViewSet):
queryset = Test.objects.all()
serializer_class = TestSerializer
def destroy(self, request, *args, **kwargs):
complete_check = self.get_object()
if complete_check.is_complete:
raise exceptions.ValidationError("조건에 만족하지 못하는 인스턴스는 삭제할 수 없습니다.")
else:
return super().destroy(request, *args, **kwargs)