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
'트러블 슈팅' 카테고리의 다른 글
고객 검색 최적화 트러블 슈팅 (1) | 2024.06.02 |
---|---|
STORED 컬럼을 이용한 쿼리 최적화 (0) | 2024.03.09 |
[MySQL] Pagination 방법론 (0) | 2024.03.03 |
RDBMS Index (1) | 2024.02.18 |
인증 토큰: 관리자와 사용자 간의 인증 비교 (1) | 2023.12.30 |