Django viewset에서 파라메터 pk 변경 (with lookup_field)

sig03
Nov 6, 2022

--

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 해야 하는 건지 좀 더 찾아봐야 겠다.

--

--

sig03
sig03

No responses yet