2013-01-10 40 views
6

come si includono i campi correlati nell'api?Django Rest Framework - Relazioni inverse

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

class Bar(models.Model): 
    foo = models.ForeignKey(Foo) 
    description = models.CharField() 

Ogni Foo ha un paio di bar di correlate a lui, come immagini o che cosa mai.

Come posso visualizzare queste barre nella risorsa di Foo?

con tastypie sua smettere di semplice, non sono sicuro con Django Resto quadro ..

risposta

8

ho ottenuto che funziona! Shweeet!

Ok questo è quello che ho fatto:

creati Serializzatori, viste e URL per l'oggetto Barra come descritto nella documentazione di Django Quickstart REST quadro.

Poi nel Foo Serializzatore ho fatto questo:

class FooSerializer(serializers.HyperlinkedModelSerializer): 
    # note the name bar should be the same than the model Bar 
    bar = serializers.ManyHyperlinkedRelatedField(
     source='bar_set', # this is the model class name (and add set, this is how you call the reverse relation of bar) 
     view_name='bar-detail' # the name of the URL, required 
    ) 

    class Meta: 
     model = Listing 

actualy sua reale semplice, la documentazione appena non vedere bene direi ..

+0

Questo non ha funzionato per me. Ottengo un errore dicendo che l'url non può essere risolto. Ho aggiunto l'url all'interno del mio resto/urls.py e funziona. Non sono sicuro di cosa sto sbagliando. – sweyrick

+3

Volevo solo dire grazie !!!!!!! La documentazione su questo è pessima. – whoisearth

3

In questi giorni è possibile raggiungere questo obiettivo semplicemente aggiunta della relazione inversa alla tupla fields.

Nel tuo caso:

class FooSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Foo 
     fields = (
      'name', 
      'bar_set', 
     ) 

Ora il "bar"-set sarà incluso nella vostra risposta Foo.

+0

Sto facendo lo stesso, nella risposta annidata, diciamo che ci sono 4 barre correlate quindi sto ricevendo 4 jsons vuoti, non so perché questo non funziona, il conteggio funziona correttamente – Sugam

Problemi correlati