序列化单个对象?

2 投票
2 回答
666 浏览
提问于 2025-04-17 07:17

我有一个想要转换成字符串的单个对象:

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]

撰写回答