2011-11-29 66 views
2

我有一个单独的对象我想要序列:序列化单个对象?

from django.core import serializers 

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

这将引发“不可迭代”的错误,因为它似乎预计,第二个参数应该是迭代。我如何将单个对象序列化为JSON?

回答

3

您可以随时将所需的对象包装到列表中,并只取回第一个元素。你的第二个参数可以是:

[get_object_or_404(Animal, pk=1),] 

,当你反序列化,

my_obj = deserialize()[0] 
2

为了使用serializers.serialize您需要传递一个可迭代的(queryset)。 get_object_or_404返回单个对象。在这种情况下,您需要一个包含该特定对象的查询集(使用pk)。 filter是你需要的。尝试类似:

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