仅将django模型对象的一个​​条目转换为json

时间:2012-08-01 02:29:51

标签: django json django-models

我有一个模型Y ,有3个字段。在这个模型Y中,我有5个条目。

我知道我可以使用:

from django.core import serializers

def aMethodThatReturnsJson():
    return HttpResponse(serializers.serialize("json", Y.objects.all()))

这将返回正确的json响应。

但是当我改变方法只返回模型中的一行时,如下所示,我得到的模型Y不是可迭代的错误:

def returnOnlyOneRow():
    return HttpResponse(serializers.serialize("json", Y.objects.get(pk=1)))

为什么这不会返回正确的json对象?这样做的正确方法是什么?

感谢。

1 个答案:

答案 0 :(得分:10)

以下是这样做的方法:

from django.core import serializers

def return_only_one_row():
    return HttpResponse(serializers.serialize("json", Y.objects.filter(pk=1)))

使用filter()代替get()会返回正确的JSON响应。

另一种方法是使用Python列表。您可以将查询包装在[ ]中,以将生成的响应转换为列表,然后将其序列化为JSON。示例如下:

def return_only_one_row():
    return HttpResponse(serializers.serialize("json", [Y.objects.get(pk=1)]))