세부적인 컨트롤을 위해서는 Override 하여 나에 맞게 수정해주는 작업이 필요하다.
필자는 ModelViewSet을 사용했기 때문에 이를 예시로 들어보고자 한다!
* ModelViewSet 은 GET, POST가 아닌 아래와 같은 action을 제공함
.list() = GET , all
.retrieve() = POST
.create() = GET , one
.update() = PUT
.partial_update() = PUT
.destroy() =DELETE
기본 ModelViewSet은 아래와 같다.
class UserViewSet(viewsets.ModelViewSet):
serializer_class = UserSerializer
queryset = User.objects.all()
위의 action 중 destory()를 오버라이드 하여 DELETE 요청을 soft delete로 변경해주고자 한다.
def destroy(self, request, *args, **kwargs):
user = self.get_object()
user.is_active = False
user.save()
return Response(data='delete user success')
is_active를 False로 변경해주면서 단순 처리해준다.
인자는 이렇게 주어진대로 작성 후 코드를 내가 원하는 대로 작성해주면 된다.
이와 같은 내용은 class_ModelViewSet 에서 확인할 수 있다.
'👩💻 개발 > ⚙️ BACKEND' 카테고리의 다른 글
[Django] dj-rest-auth Custom (0) | 2022.12.22 |
---|---|
[Django] DRF JWT 회원가입, 로그인 기능/ dj-rest-auth (0) | 2022.12.22 |
[Django] ViewSet , Router (4) | 2022.10.08 |
[Django] admin 계정 생성 (0) | 2022.10.08 |
[Django] related_name 설정 (0) | 2022.10.07 |