我有一个模型Y ,有3个字段。在这个模型Y中,我有5个条目。
我知道我可以使用:
from django.core import serializers
def aMethodThatReturnsJson():
return HttpResponse(serializers.serialize("json", Y.objects.all()))
这将返回正确的json响应。
但是当我改变方法只返回模型中的一行时,如下所示,我得到的模型Y不是可迭代的错误:
def returnOnlyOneRow():
return HttpResponse(serializers.serialize("json", Y.objects.get(pk=1)))
为什么这不会返回正确的json对象?这样做的正确方法是什么?
感谢。
答案 0 :(得分:10)
以下是这样做的方法:
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)]))