序列化单个对象?

时间:2011-11-29 04:06:05

标签: python django json

我想要序列化一个对象:

from django.core import serializers

...
    return HttpResponse(serializers.serialize("json", get_object_or_404(Animal, pk=1)), mimetype="application/json")

这会抛出“Not Iterable”错误,因为它似乎期望第二个参数应该是可迭代的。如何将单个对象序列化为JSON?

2 个答案:

答案 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")