IT/Django

django backend와 frontend 통신 시 쿼리파라미터 boolean 처리 방법.

bepuri 2021. 7. 27. 13:27
728x90

장고에서 query params을 true false로 실어서 보낼때 django에서 받아보면 boolean값으로 들어오는게 아니라 문자열로 들어와서 해당 로직을 고려하지 않는 경우 생기는 문제가 있다.

 

예를들면 BooleanField를 해당 값으로 filter해버리면 에러가 난다.

True False만 넣어야되는데 문자열이 들어가기 때문이다.

 

이거 때문에 검색을 좀 해봤다.

 

결론은 보낼때 0, 1로 query params를 실어서 보내야된다.

그렇게하면 값 또한 상수 0, 1로 넘어오는데

해당 값을 django filter에서는 0을 False로 인식하고 1을 True로 인식하기 때문에 정상적으로 query filter가 가능해진다.

 

더 간단하게는 DjangoBackendFilter를 쓰면되는데, 이 경우는 Modeviewset에서 이미 filter처리를 한 뒤에 다시금 DjangoBackendFilter를 통해서 필터링 처리를 하는 경우 and filter 사용이 어려워 진다는 점이 있다.

 

나도 이때문에 어쩔 수 없이, get_queryset 쪽에서 개별적으로 필터 처리를 해주게 되었다.

728x90