파비의 매일매일 공부기록

parent_lookup_% 관련 삽질 후기 본문

Trouble Shooting/From workplace

parent_lookup_% 관련 삽질 후기

fabichoi 2021. 7. 15. 23:30

하..... 오늘 반나절을 이거 때문에 삽질 ㅠㅠ

 

일단 배경에 대해 설명하자면

django-rest-framework(DRF)를 사용하고 있으며

pk를 받지 않고 post method를 데이터 '초기화' 용으로 사용하려고 하는 상황이었다.

 

그런데 url path가 /abcd와 같은 형태가 아니고

/abcd/:id/efgh/:another_id/reset의 형태로 호출을 해야 했다.

만약 단순 /abcd와 같은 형태였다면 이런 삽질을 할 이유가 없었지만

모종의 이유로 /abcd/:id/efgh/:another_id/reset를 유지해야 했다.

 

그래서 데코레이터를 활용해서

@action(detail=False, method=['post'])

def reset(self, request):

형태로 사용을 했다.

 

근데 계에에에에에속 오류가 나서 구글링도 해보고

detail=True로 바꿔서 구현도 시도해보고(이건 PK 가 있어야 돼서 애초에 불가)

삽질에 삽질에 삽질을 더해서

결국 그냥 단순 /abcd랑 비슷한 형태로 구현할까...? 하던 중에

 

같은 프로젝트를 하는 동료가 최근 짜 놓은 소스를 참고해서

비슷하게 따라 해 보니(별 관련도 없는 Serializer도 넣어보고)

 

어..?....... 네? 이게 왜 됨?

그래서 Serializer도 제거해서 해보니 문제없이 됨..

 

내가 놓쳤던 건

def reset(self, request):  => def reset(self, request, *args, **kwargs): 로 변경해야 하는 거였다.

 

어쩐지.. 계속 에러 메시지 나오는 게 kwargs에 있는 parent_lookup_% 관련이었는데 ㅠㅠ

배경 지식이 없으니 이렇게..... 삽을 푸는구먼 ㅠㅠ

 

그래도 덕분에 진짜 힘들게 데코레이터, 라우터에 대해서 찾아보고

기존 소스에 대해서도 꽤 많이 파악이 됐다.

 

삽질에 시간을 쓴 덕에 오늘 구현하기로 한 task까지는 못 갔지만

그래도 비슷한 이슈가 생기면, 이제는 1~2분 안에 해결이 가능하니

뭐.. 다.. 다행인가? ㅋㅋㅋㅋㅋㅋㅋ

 

여하튼 오랜만에 삽질(이라고 쓰고 트러블슈팅이라고 읽는) 끝에 해결해서 기부니가 좋다.

반응형
Comments