6 Stimmen

Serialisierung von Objekten, die Django-Querysets enthalten

Django stellt Werkzeuge zur Verfügung, um Querysets zu serialisieren (django.core.serializers), aber wie sieht es mit der Serialisierung von Querysets aus, die sich in anderen Objekten befinden (z.B. Dictionaries)?

Ich möchte das folgende Wörterbuch serialisieren:

dictionary = { 'alfa': queryset1, 'beta': queryset2, } 

Ich beschloss, dies zu tun, indem ich simplejson (wird mit django geliefert). Ich erweitert simplejson.JSONEncoder auf folgende Weise:

from django.utils import simplejson
from django.core import serializers

class HandleQuerySets(simplejson.JSONEncoder):
     """ simplejson.JSONEncoder extension: handle querysets """
     def default(self, obj):
         if isinstance(obj, QuerySet):
             return serializers.serialize("json", obj, ensure_ascii=False)

         return simplejson.JSONEncoder.default(self, obj)

Dann tue ich es: simplejson.dumps( dictionary, cls=HandleQuerySets) aber das zurückgegebene Wörterbuch sieht wie folgt aus:

{ "alfa": "[{\"pk\": 1, \"model\": \"someapp.somemodel\", \"fields\": {\"name\": \"alfa\"}}]",
  "beta": "[{\"pk\": 1, \"model\": \"someapp.somemodel\", \"fields\": {\"name\": \"alfa\"}}]" }

Von Django generiertes JSON wird als String und nicht als JSON in das Wörterbuch eingefügt. Was mache ich falsch?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X