2017-04-14 2 views
0

각 사용자와 관련된 책의 수를 보여주는 차트를 표시하려고합니다. 셸에서 올바른 결과를 얻지 만 템플릿을 렌더링 할 때 다음과 같은 정보를 얻습니다. 오류 : 직렬화 JSON없는<User: root>은 JSON을 직렬화 할 수 없습니다.

내 template_tag

@register.simple_tag() 
def chart_data(): 
    users = User.objects.annotate(num_books=Count('books')) 
    return json.dumps({ 
     'labels':[user for user in users], 
     'series':[[user.num_books for user in users]] 
    }) 
+0

정확하게 출력을 원하십니까? 오류가 말하기를, 모델 인스턴스를 json.dumps에 직접 전달할 수는 없습니다. –

+0

최종 출력을 각 사용자에 대한 책 수를 표시하는 차트로 만들고 싶습니다. 예를 들어 사용자 "root"는 50 권의 책을 가지고 있습니다. 그리고 나는 chartist.js를 사용하고 있습니다. –

+0

글쎄, 나는 전혀 물어 보지 않았습니다. 이 템플릿 태그에서 JSON을 출력하려고합니다. 그게 닮았 으면 좋겠어? –

답변

0

당신이 JSON에 파이썬 class 개체를 인코딩하기 위해 노력하고 있기 때문에 당신이보고있는,하지만 JSON 모듈은 파이썬 class를 직렬화 지원하지 않습니다 .

json이 지원하는 개체 만 listed here입니다.

User 개체를 직렬화하는 대신이 사용자의 사용자 이름을 일련 번호로 사용해보십시오. 다음과 같이 5 번째 줄을 변경하십시오.

'labels':[user.username for user in users], 
+0

완벽하게 일했습니다. 감사합니다, xyres –

관련 문제