我想要序列化一个对象:
from django.core import serializers
...
return HttpResponse(serializers.serialize("json", get_object_or_404(Animal, pk=1)), mimetype="application/json")
这会抛出“Not Iterable”错误,因为它似乎期望第二个参数应该是可迭代的。如何将单个对象序列化为JSON?
答案 0 :(得分:3)
您始终可以将所需对象包装到列表中,并仅收回第一个元素。你的第二个论点可能是:
[get_object_or_404(Animal, pk=1),]
当你反序列化时,
my_obj = deserialize()[0]
答案 1 :(得分:2)
为了使用serializers.serialize
,您需要传递一个iterable(queryset)。 get_object_or_404
返回单个对象。在这种情况下,您需要一个包含该特定对象的查询集(使用pk
)。 filter
是您所需要的。尝试类似:
return HttpResponse(serializers.serialize("json", Animal.objects.filter(pk=1)), mimetype="application/json")