序列化单个对象?
我有一个想要转换成字符串的单个对象:
from django.core import serializers
...
return HttpResponse(serializers.serialize("json", get_object_or_404(Animal, pk=1)), mimetype="application/json")
这段代码会报“不可迭代”的错误,因为它似乎期望第二个参数应该是可以迭代的。那我该怎么把一个单独的对象转换成JSON格式呢?
2 个回答
2
要使用 serializers.serialize
,你需要传入一个可迭代的对象(比如查询集)。而 get_object_or_404
只会返回一个单独的对象。在这种情况下,你需要一个包含那个特定对象的查询集(可以用 pk
来指定)。你需要用到 filter
。可以试试下面这样的代码:
return HttpResponse(serializers.serialize("json", Animal.objects.filter(pk=1)), mimetype="application/json")
3
你可以把想要的对象放进一个列表里,然后只取出第一个元素。你的第二个参数可以是:
[get_object_or_404(Animal, pk=1),]
然后当你反序列化的时候,
my_obj = deserialize()[0]