3

我有一个带有 3 个字段的模型 Y。在这个模型 Y 中,我有 5 个条目。

我知道我可以使用:

from django.core import serializers

def aMethodThatReturnsJson():
    return HttpResponse(serializers.serialize("json", Y.objects.all()))

这将返回正确的 json 响应。

但是当我将方法更改为仅从模型返回 1 行时,如下所示,我得到 Model Y is not iterable 错误:

def returnOnlyOneRow():
    return HttpResponse(serializers.serialize("json", Y.objects.get(pk=1)))

为什么这不返回正确的 json 对象?正确的方法是什么?

谢谢。

4

1 回答 1

16

这是执行此操作的方法:

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)]))
于 2012-08-01T18:15:41.257 回答