IsAdmin, IsAuthenticated로 permission 설정을 하려고했는데 도저히 권한 설정이 되지않아서 고생을 했다. 구글을 계속 뒤져서 하라는대로 했는데 되지 않았다. 그렇게 몇시간을 삽질을 하다가, class에다가 authentication_classes를 설정하면 제대로 작동을 하는것을 발견했다. 그말인즉슨, 내가 settings에 설정했었던 authentication_clasees가 작동하지 않고 있다는것. 그래서 settings를 뒤져보니 왠일... REST_FRAMEWORK로 global setting을 해둔게 마지막에 하나 더 있었던 것이다. 나는 위에다가 설정을 하고 다른 팀원은 가장 밑에 설정해서 merge하는 과정에서 합쳐졌는데 중복된 것을 발견하지 못했던 것이었다...😱 알고나니 별거 아닌걸로 몇시간을 헤맸지만 헤매면서 drf를 좀 더 샅샅이 알게 된 것 같았고 안되던 문제를 해결하니 기분이 좋았다.
기사 배치 뷰 수정
며칠간 계속 끙끙대던 기사 배치 view를 드디어 다시 짰다! 어제는 DeliveryInfoSerializer와 DeliveryInfoListSerializer를 사용해서 시도를 해봤는데 뭔가 원하는대로 흘러가지 않았다. 오늘에야 그 이유를 알게되었는데 나의 request.data는 하나의 serializer이고 그 데이터에 해당되는 쿼리가 여러개 발생한다. ListSerializer는 input으로 여러개의 serializer가 발생할때 이용하는 것이기 때문에 계속 삐걱댔던 것이다.
또한 request.data를 validate하려면 Serializer에 model에 있는 fields뿐만 아니라 request.data로 들어오는 값인 zones도 추가해줘야한다.
결국 view의 update함수에서 request.data에 해당하는 queryset을 얻어내고, serializer로 request.data의 유효성을 검사한뒤 유효하면 가져온 queryset의 deliveryman을 bulk_update한다. 아직 코드에서도 부족한 부분이 있고 validation도 더 강화해야하지만 이전보다 만족할만한 코드가 나와서 기분이 좋다.:)