Question

J'ai un modèle Django (calendrier) avec la classe d'entité, c'est-à-dire le parent de Activity , c'est-à-dire le parent de Event .

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

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

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

Comment sérialiser et obtenir l'objet enfant et les petits-enfants dans le fichier JSON?

Était-ce utile?

La solution 2

J'utilise maintenant django-piston. Cela fait l'affaire.

Autres conseils

Avant de procéder à la sérialisation, lors de la récupération de vos objets, pour préserver les relations, utilisez select_related () pour obtenir des enfants, des petits-enfants, etc.

voir http://docs.djangoproject.com/en/dev/ ref / models / querysets /

Il me semble que la question posée par l'affiche était d'obtenir un résultat du type:

Par exemple, en commençant par ces modèles:

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)

Résultat en 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"
                }
            ]
        }
    ]
}

Conservez ainsi le parent-enfant-petit-enfant (pas l'héritage, mais la traversée d'une relation un à plusieurs). Si ce n'était pas l'intention de l'affiche initiale, je m'excuse ... mais si c'est le cas, j'aimerais également connaître la réponse.

Découvrez la sérialisation des modèles et des objets hérités de la documentation Django disponible à l'adresse http://docs.djangoproject.com/en/dev/topics/serialization/?from=olddocs#inherited-models

Cela devrait résoudre votre problème.

Je pense que vous pouvez trouver votre réponse ici: http://code.djangoproject.com/ticket/ 4656

Cela fera partie des sérialiseurs django à un moment donné. Pour le moment, il devrait être capable de remplacer les sérialiseurs Django standard par ceci et de s’échapper.

vous pouvez le faire en deux lignes de code simples:

from django.core import serializers
data = serializers.serialize("json", SomeModel.objects.all())
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top