web-dev-qa-db-fra.com

Créer un tableau json dans django

J'essaie de faire un tableau JSON dans Django mais je reçois une erreur -

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

et mes views.py -

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

Fondamentalement, user_post est un modèle et les publications sont l’objet des 20 meilleures données enregistrées. Je souhaite envoyer un tableau JSON, mais je ne parviens pas à convertir les messages en tableau JSON. J'ai aussi essayé les sérialiseurs mais cela n'a pas aidé.

Je suis coincé, aidez-moi s'il vous plaît.

Merci d'avance.

14
aquaman

Cela résoudrait-il votre problème?

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

Vous pouvez résoudre ce problème en utilisant safe=False:

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

        return JsonResponse(posts, safe=False)

Notez que ce n'est pas vraiment unsafe - vous devez simplement vous assurer que ce que vous essayez de retourner peut être converti en JSON.

Voir JsonResponse docs pour référence.

4
Projesh Bhoumik

Essayez d'utiliser la méthode values ​​: http://Django.readthedocs.org/en/1.7.x/ref/models/querysets.html#Django.db.models.query.QuerySet.values ​​ . Il produira une représentation semblable à celle d'un dicton pour les champs d'objets dont vous avez besoin.

0
S.Kozlov