본문 바로가기
트러블 슈팅

Not json serializable 오류 해결 방법

by Shark_상어 2023. 4. 19.
728x90

이 글의 목적은 트러블 슈팅 기록용 이다.

 

django orm으로 필터링 중 발생 하였고 그 이유 와 해결 방법에 대해 작성 하고자 한다.

 

1. 원인: Mymodel.objects.filter(**filter_condition) 이 부분에서 Not json serializable 오류 발생 하였다.
filter_condition 컨디션 코드는 예를 들면, filter_condition = {필드명__range('2023-04-18', '2023-04-19')}

이렇게 지정 하였다.

2. 이유 filter_condition은 JSON 직렬화 가 가능한 객체 가 아니기 때문에 발생 한다.
따라서, filter() 메소드에 사용되는 인자를 JSON으로 직렬화할 수 있는 방법은 존재하지 않는다. 만약 필터링된 결과를 JSON 형태로 반환하려면, QuerySet 객체를 serialize하는 대신, QuerySet 객체를 list()나 values() 메소드를 사용하여 일반 Python 리스트나 딕셔너리 형태로 변환한 후에 직렬화해야 한다.

3. 오류 해결 법
list(Mymodel.objects.filter(**filter_condition).values()) 으로 해결 할 수 있다.

728x90