django对象不能使用serializers.serialize进行迭代

Gra*_*ntU 6 django

我收到以下错误,

模板'对象不可迭代

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

但是,我正在使用,'get'所以我不明白为什么我会收到此错误.有任何想法吗?

Pau*_* Bu 19

那是因为你没有传递一个iterable也没有传递QuerySet,而是传递一个Template对象.如果要序列化该单个对象,可以这样做:

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

更新:建议filter改为使用.

filter如果pk不存在,还可以考虑使用而不是get来避免可能的异常.这样您就不需要括号,因为它是一个QuerySet对象

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

希望能帮助到你!

  • 但这仍然将 json 输出为数组而不是对象。 (2认同)