在Django中将JSON两个查询集序列化为JSON

时间:2012-09-20 10:12:51

标签: python django json serialization

我的Django项目中有两个类型为queryset的对象的JSON序列化问题。例如,我有:

collectionA = A.objects.all()
collectionB = B.objects.all()

当我尝试仅序列化一个集合时:

json = serializers.serialize('json', collectionA)

然后一切正常,但我如何将这两个集合序列化为一个json对象?

2 个答案:

答案 0 :(得分:7)

from itertools import chain
combined = list(chain(collectionA, collectionB))

json = serializers.serialize('json', combined)

答案 1 :(得分:2)

您无法组合两个查询集来序列化它们。如果序列化一个查询集,则实际执行该查询集并在此时填充查询集数据。如果您只想要集合中的数据,只需获取集合,加入它们,然后序列化已连接的集合。形式的东西:

collectionA = list(A.objects.all())
collectionB = list(B.objects.all())
joined_collection = collectionA + collectionB
json = serializers.serialize('json', joined_collection)

尝试一下,这应该可行。