Frage

ich ein Django-Modell (Zeitplan) mit der Klasse der Einheit haben, dass die Eltern von Activity ist, das heißt die Eltern von Event.

class Entity(models.Model):
    <...>

class Activity(models.Model):
    <...>
    team_entity = models.ForeignKey(Entity)
    <...>   

class Event(models.Model):
    <...>
    activity = models.ForeignKey(Activity)
    <...>

Wie kann ich serialisiert und erhalten sowohl das Kind Objekt und Enkelkinder als Teil der JSON-Datei?

War es hilfreich?

Lösung 2

ich jetzt django-Kolben verwenden. Dies funktioniert der Trick.

Andere Tipps

Vor der Serialisierung zu tun, wenn Ihre Objekte abrufen, bewahren die Beziehungen verwenden select_related () Kinder zu bekommen, Enkel, etc.

finden Sie unter http://docs.djangoproject.com/en/dev/ ref / models / querysets /

Es scheint mir, dass die Frage, das Plakat war fragt mit einem Ergebnis am Ende wie:

Zum Beispiel mit diesen Modellen starten:

class Entity(models.Model):
    name = models.CharField(...)

class Activity(models.Model):
    name = models.CharField(...)
    team_entity = models.ForeignKey(Entity)

class Event(models.Model):
    name = models.CharField(...)
    activity = models.ForeignKey(Activity)

Ergebnis in JSON:

{
    "model": "Entity",
    "name":  "Dallas Cowboys",
    "activities": [
        {
            "model": "Activity",
            "name": "Practice"
        },

        {
            "model": "Activity",
            "name": "Game"
            "events": [
                {
                    "model": "Event",
                    "name": "vs Washington Redskins"
                },

                {
                    "model": "Event",
                    "name": "vs Green Bay Packers"
                }
            ]
        }
    ]
}

So halten die Eltern-Kind-Enkel (nicht inheritence, sondern eine Eins-zu-viele-Beziehung-Traversal). Ist dies nicht die Absicht der ursprünglichen senden war, entschuldige ich mich ... aber wenn so würde ich die Antwort auf diese auch mögen.

Haben Sie einen Blick auf die Serialisierung geerbten Modelle und Objekte aus der Django-Dokumentation verfügbar unter http://docs.djangoproject.com/en/dev/topics/serialization/?from=olddocs#inherited-models

Das sollte Ihr Problem lösen.

Ich glaube, Sie Ihre Antwort finden Sie hier: http://code.djangoproject.com/ticket/ 4656

Dies wird Teil von django Serializer irgendwann werden. Gerade jetzt sollte es in der Lage sein, nur ersetzen Standard django Serializer mit diesem und vor sich hin arbeiten.

Sie können dies tun, in einfachen zwei Codezeilen:

from django.core import serializers
data = serializers.serialize("json", SomeModel.objects.all())
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top