我有三个不同类型的对象: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
说法:
日期时间对象不可序列化。
任何提示将不胜感激。
Sunny的答案将以字符串形式返回JSON(由双引号引起来)。为了避免这种情况,返回列表可以满足我的需要:
serialized = []
AVAILABLE_SERIALIZERS = {RawArticle: RawArticleSerializer, RawGrant: RawGrantSerializer, RawPatent: RawPatentSerializer}
for article in articles:
serialized.append((AVAILABLE_SERIALIZERS[type(article)](article, many=False)).data)
return Response(serialized)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句