Django-Modelle sind nicht ajax serializable
Habe ich eine einfache Ansicht, die ich verwende, zu Experimentieren mit AJAX.
def get_shifts_for_day(request,year,month,day):
data= dict()
data['d'] =year
data['e'] = month
data['x'] = User.objects.all()[2]
return HttpResponse(simplejson.dumps(data), mimetype='application/javascript')
Dieser gibt die folgenden:
TypeError at /sched/shifts/2009/11/9/
<User: someguy> is not JSON serializable
Wenn ich die Daten['x'] - Linie, so dass ich nicht die Referenzierung von beliebigen Modellen es funktioniert und gibt dieses:
{"e": "11", "d": "2009"}
Warum kann nicht simplejson analysieren mein Standard-django-Modelle? Ich bekomme das gleiche Verhalten bei jedem Modell, das ich verwenden.
- zweideutige Frage, nicht wirklich eine Frage, die im Titel der Frage
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie nur hinzufügen, in Ihrem
.dumps
Anruf, einedefault=encode_myway
argument zu lassensimplejson
wissen, was zu tun ist, wenn Sie es weiterleiten von Daten, deren Typen es nicht weiß-die Antwort auf Ihr "warum" - Frage ist natürlich auch, dass Sie noch nicht gesagt Armensimplejson
was zu TUN mit einem Ihrer Modelle' Instanzen.Und natürlich müssen Sie schreiben
encode_myway
zu bieten JSON-codierbaren Daten, z.B.:Grundsätzlich JSON kennt SEHR Elementare Datentypen (strings, ints und floats, gruppiert in dicts und Listen) - es ist IHRE Verantwortung als Anwendungsprogrammierer zu entsprechen, alles andere in/aus solchen elementaren Daten-Typen, und in
simplejson
das ist gewöhnlich getan durch eine Funktion übergebendefault=
beidump
oderdumps
Zeit.Alternativ können Sie die
json
serializer, ist ein Teil von Django, siehe die docs.