2012-08-01 45 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

相關問題