2013-05-19 30 views
3

我收到以下錯誤,Django的對象不是可迭代使用serializers.serialize

模板'對象不是可迭代

def get_AJAX(request, id): 
    data = serializers.serialize("json", Template.objects.get(pk=id)) 
    return HttpResponse(data) 

不過,我使用'get'所以我不不明白爲什麼我得到這個錯誤。有任何想法嗎?

+1

你想完成什麼?序列化一個對象? –

+0

@Paulo Bu,是的,當這是一個可以工作的列表,但有1個對象時,我得到了錯誤。 – GrantU

回答

13

這是因爲你沒有通過iterable nor a QuerySet,而是通過了Template對象。如果你想序列化一個對象,你可以做這樣的:

def get_AJAX(request, id): 
    data = serializers.serialize("json", [Template.objects.get(pk=id)]) 
    return HttpResponse(data) 

UPDATE:使用filter,而不是推薦。

還要考慮使用filter,而不是爲了避免可能出現的異常,如果PK不存在獲得。這樣,您就不需要支架,因爲它是一個QuerySet對象

def get_AJAX(request, id): 
    data = serializers.serialize("json", Template.objects.filter(pk=id)) 
    return HttpResponse(data) 

希望它能幫助!

+0

這工作!就這麼簡單,我太愚蠢了! – GrantU

+0

不要對自己這麼努力:)我很高興它的工作! –