2014-05-04 4 views
0

Existe-t-il un moyen d'envoyer avec json (ou autre chose que render) une liste object_list faite avec paginator? Le navigateur effectue une requête getjson jquery et la fonction views.py est supposée renvoyer l'objet. La raison pour laquelle je veux retourner un objet JSON plutôt que de rendre une nouvelle page est parce que je ne veux pas la page pour rechargerDjango envoie l'objet comme json

Le code views.py suivant:

searchresults = form.search()#this is a call to a haystack form template 
results = Paginator(searchresults, 20) 
page = results.page(1) 
return HttpResponse(json.dumps(page), content_type='application/json') 

gets cette erreur:

TypeError: <Page 1 of 1> is not JSON serializable 

Répondre

2

Il suffit d'utiliser sérialisation django https://docs.djangoproject.com/en/dev/topics/serialization/

from django.core import serializers 
... 
return HttpResponse(serializers.serialize("json", [q.object for q in results.page(1).object_list]), content_type='application/json') 
+0

Merci, mais cela n'a pas fonctionné. AttributeError: l'objet 'NoneType' n'a pas d'attribut 'concrete_model' – user2104778

+1

Oh. Je n'ai pas vu que vous utilisiez une botte de foin. Il utilise un autre format de queryset. Alors essayez ça (modifiez la réponse) – EvilX

+0

Awesome. Fonctionne comme un charme. Je vous remercie. – user2104778

0

Vous devez créer un dictionnaire qui est sérialisable comme @evilx a commenté ou fait votre propre Json à la main.

Questions connexes