2012-08-01 42 views
2

我有一个模型Y有3个字段。在这个模型中,我有5个条目。将django模型对象只有一个条目转换为json

我知道,我可以使用:

from django.core import serializers 

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

这将返回正确的JSON响应。

但是,当我改变方法,从模型中只返回1行,像下面,我得到的Y型没有可迭代的错误:

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

为什么这个不能返回正确的JSON对象?什么是正确的方法来做到这一点?

谢谢。

+1

可能重复的[Django的返回单个记录作为JSON(http://stackoverflow.com/questions/2255910/django-return-a-single-record-as-json) – 2012-08-01 02:37:44

+0

由于。这回答了我的问题。在我半天的搜索中,这个答案从来没有出现过。 :-( – Stealth 2012-08-01 02:44:35

回答

9

下面是做到这一点的方式:

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)])) 
+0

好的答案,正在寻找一种方法来序列化一个返回的对象,这解决了它。 – virtuexru 2013-10-31 15:33:59

相关问题