【发布时间】:2014-02-09 16:49:51
【问题描述】:
我有三种不同类型的对象:RawArticle、RawPatent 和 RawGrant。
我有很棒的序列化器,它的基类是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 说:
日期时间对象不可序列化。
任何提示将不胜感激。
【问题讨论】:
标签: django json serialization django-rest-framework