나는 세 가지 유형의 물체, 즉 RawArticle
, RawPatent
및 RawGrant
을 가지고 있습니다.Django REST 프레임 워크 : 다른 serizalized 개체 목록?
기본 클래스가 serializers.ModelSerializer
인 훌륭한 작업 직렬화기를 사용합니다. 내가 RawArticle
의 쿼리 집합을 검색하는 경우
나는 many=True
와 시리얼 고객에게 직접 전달할 수 있으며, 출력은 공칭 :
[{"save_link": "...", "published": "2014-01-18T20:39:54.086Z", }, {"save_link": "...", "published": "..."}, ...]
:
return Response(RawArticleSerializer(articles, many=True).data)
이제 세 개의 다른 개체가 생겼으므로 위의 개체와 마찬가지로 개체를 연결하고 싶습니다.
나는 지금까지 성공적이지 못했다.
이all_latest = user_latest(request)['latest_articles']
available_serializers = {RawArticle: RawArticleSerializer, RawGrant: RawGrantSerializer, RawPatent: RawPatentSerializer}
serialized = []
for article in all_latest:
serialized.append((available_serializers[type(article)](article, many=False)).data)
return Response(str(serialized))
JSON 및 날짜 시간을 반환하지 않습니다 위의 코드가 실제 날짜로 변환되지 않습니다 : 내 초기 아이디어는 단순히 그 (물론 연재) 등의 직렬화 된 객체의 목록을 작성하고 반환하는 것이 었습니다 시간은 문자열로 표시됩니다.
내 최신 시도는 json.dumps 및 simplejson를 사용했는데 둘 다 말하는 TypeError
인상 :
날짜 시간 객체 직렬화하지 않습니다.
힌트를 주시면 감사하겠습니다.
대단히 고마워요! JSONRendered가 트릭을 수행했습니다. – ChrisR
실제로 이것은 문자열을 반환합니다. .data가 트릭을 한 후에 목록을 반환합니다. 아래에서 내 대답을 설명하겠습니다. – ChrisR
좋은 연습이 부족합니다 : 비즈니스 엔티티에서 직렬화 로그인을 분리하십시오. 나는 접근 방식을 제안했다 :'serialized = all_latest에서 기사를위한 RawArticleSerializer (article, many = False) .data'''RawArticle' 클래스에서'serialize()'메소드를 제거했다. – Rafa0809