wake-up-neo.com

Erstellen eines Json-Arrays in Django

Ich versuche in Django ein Json-Array zu erstellen, aber ich bekomme Fehler -

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

und meine Ansichten.py -

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

Im Grunde ist user_post ein Modell, das ein Beitrag enthält und das Objekt der Top 20 der gespeicherten Daten ist. Ich möchte ein Json-Array senden, aber ich kann Beiträge nicht in ein Json-Array konvertieren. Ich habe auch Serializer ausprobiert, aber es hat nicht geholfen.

Ich stehe fest, bitte hilf mir.

Danke im Voraus.

14
aquaman

Würde das dein Problem lösen?

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) 
31
ger.s.brett

Sie können dieses Problem lösen, indem Sie safe=False verwenden:

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

        return JsonResponse(posts, safe=False)

Beachten Sie, dass es nicht wirklich unsicher ist - Sie müssen nur selbst sicherstellen, dass das, was Sie zurückgeben möchten, in JSON konvertiert werden kann.

Siehe JsonResponse docs als Referenz.

4
Projesh Bhoumik

Verwenden Sie die Methode values ​​: http://Django.readthedocs.org/de/1.7.x/ref/models/querysets.html#Django.db.models.query.QuerySet.values ​​ . Es erzeugt eine dikteartige Darstellung für die von Ihnen benötigten Objektfelder.

0
S.Kozlov