3

我的 Django 项目中的两个查询集类型对象的 JSON 序列化存在一些问题。例如我有:

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

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

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

那么一切正常,但是我怎样才能将这两个集合序列化为一个 json 对象呢?

4

2 回答 2

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

json = serializers.serialize('json', combined)
于 2012-09-20T10:23:28.457 回答
3

您不能组合两个查询集来序列化它们。如果你序列化一个查询集,它实际上会被执行并且查询集数据在那一刻被填写。如果您只想要集合中的数据,只需获取集合,加入它们,然后序列化加入的集合。某种形式的东西:

from django.core import serializers

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

试试看,这应该可以。

于 2012-09-20T10:23:35.367 回答