Django viewset에서는 url을 자동으로 생성해 준다. 그 중 retrive, delete, update 같은 경우는 어떤 row인지에 대한 조건이 붙어야 하기 때문에 조건에 대한 파라메터가 url에 포함되어 있어야 한다.
//전체 select: 에러 안 남
GET http://domain/drf///특정 값 delete: 에러 남
DELETE http://domain/drf///특정 값 delete: 에러 안 남
DELETE http://domain/drf/10
그런데 그 값이 default <int:pk> 로 되어 있다. 만약 조건값을 name 같은 string 값으로 바꾸고 싶다면 lookup_field를 정의해 주면 된다.
#views.pyclass UsersViewSet(viewsets.ModelViewSet):
queryset = Users.objects.all()
serializer_class = UserSerializers
permission_classes = [AllowAny]
lookup_field = 'name'
위와 같이 정의해 주고 아래와 같이 호출해 주면 된다. name=test5 조건으로 특정값을 제거해 준다.
//특정 값 delete: 에러 안 남
DELETE http://domain/drf/test5
단, 한 개의 row에 대해서만 처리가 된다. name=test5가 여러개 있는 경우 에러가 난다. 멀티 row는 함수를 override 해야 하는 건지 좀 더 찾아봐야 겠다.