web-dev-qa-db-ja.com

djangoでjson配列を作成する

Djangoでjson配列を作成しようとしていますが、エラーが発生しています-

In order to allow non-dict objects to be serialized set the safe parameter to False

そして私のviews.py-

def wall_copy(request):
    if True:
        posts = user_post.objects.order_by('id')[:20].reverse()
        return JsonResponse(posts) 

基本的に、user_postは、投稿が上位20個の保存データのオブジェクトであるモデルです。 JSON配列を送信したいのですが、投稿をJSON配列に変換できません。シリアライザーも試しましたが、助けにはなりませんでした。

私は私を助けて立ち往生しています。

前もって感謝します。

16
aquaman

これで問題は解決しますか?

from Django.core import serializers
def wall_copy(request):
    posts = user_post.objects.all().order_by('id')[:20].reverse()
    posts_serialized = serializers.serialize('json', posts)
    return JsonResponse(posts_serialized, safe=False) 
35
ger.s.brett

safe=Falseを使用してこれを解決できます:

    def wall_copy(request):
        posts = user_post.objects.all().order_by('id')[:20].reverse()

        return JsonResponse(posts, safe=False)

実際にはunsafeではないことに注意してください-あなたが自分で返さなければならないものをJSONに変換できることを確認する必要があります.

JsonResponse docsを参照してください。

5
Projesh Bhoumik

valuesメソッドを使用してみてください: http://Django.readthedocs.org/en/1.7.x/ref/models/querysets。 html#Django.db.models.query.QuerySet.values 。必要なオブジェクトフィールドの辞書のような表現を生成します。

0
S.Kozlov