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 に答える