11

次のエラーが表示されます。

テンプレートのオブジェクトは反復可能ではありません

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

ただし、使用して'get'いるため、このエラーが発生する理由がわかりません。何か案は?

4

3 に答える 3

26

これは、iterable も QuerySet も渡さず、代わりにTemplateオブジェクトを渡しているためです。その単一のオブジェクトをシリアル化したい場合は、次のように実行できます。

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

更新:代わりに使用することをお勧めしfilterます。

またfilter、pk が存在しない場合に発生する可能性のある例外を回避するために、get の代わりに使用することを検討してください。QuerySetこの方法では、オブジェクトであるため、ブラケットは必要ありません

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

それが役に立てば幸い!

于 2013-05-19T22:21:05.650 に答える