Domanda

Ho un modello Django (programma) con la classe di entità, che è il genitore di Activity , che è il genitore di Event .

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

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

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

Come posso serializzare e ottenere sia l'oggetto figlio che i figli maggiori come parte del file JSON?

È stato utile?

Soluzione 2

Ora uso django-piston. Questo è il trucco.

Altri suggerimenti

Prima di eseguire la serializzazione, durante il recupero dei tuoi oggetti, per preservare le relazioni usa select_related () per ottenere figli, nipoti, ecc.

vedi http://docs.djangoproject.com/en/dev/ rif / modelli / querysets /

Mi sembra che la domanda posta dal poster fosse quella di finire con un risultato come:

Ad esempio, a partire da questi modelli:

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)

Risultato 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"
                }
            ]
        }
    ]
}

Mantenendo così il genitore-figlio-nipote (non ereditarietà, ma attraversamento di relazioni uno-a-molti). Se questa non era l'intenzione del poster iniziale, mi scuso ... ma in tal caso vorrei anche la risposta a questo.

Dai un'occhiata alla serializzazione di modelli e oggetti ereditati dalla documentazione di Django disponibile su http://docs.djangoproject.com/en/dev/topics/serialization/?from=olddocs#inherited-models

Questo dovrebbe risolvere il tuo problema.

Credo che tu possa trovare la tua risposta qui: http://code.djangoproject.com/ticket/ 4656

Questo diventerà parte dei serializzatori di django ad un certo punto. In questo momento dovrebbe essere in grado di sostituire semplicemente i serializzatori standard di django con questo e lavorare via.

puoi farlo in due semplici righe di codice:

from django.core import serializers
data = serializers.serialize("json", SomeModel.objects.all())
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top