2013-01-10 21 views
6

Wie schließen Sie verwandte Felder in der API ein?Django Rest Framework - umgekehrte Beziehungen

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

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

Jeder Foo hat ein paar Bar ist im Zusammenhang mit ihm, wie Bilder oder was auch immer.

Wie bekomme ich diese Bar in der Foo-Ressource angezeigt?

mit tastypie seiner einfachen, im nicht sicher, mit Django Ruhe Rahmen verlassen ..

Antwort

8

Ich habe es funktioniert! Shweet!

Ok das ist, was ich getan habe:

Erstellt Serializer, Ansichten und URLS für das Bar-Objekt wie in der Quickstart-Dokumentation von Django REST-Framework beschrieben.

Dann in den Foo Serializer tat ich dies:

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 sein wirklich einfach, die Dokumente nicht, dass es nur zeigen, gut würde ich sagen ..

+0

Das hat nicht für mich funktioniert. Ich bekomme eine Fehlermeldung, dass die URL nicht aufgelöst werden konnte. Ich habe die URL in meinem Rest/urls.py hinzugefügt und es funktioniert. Ich bin mir nicht sicher, was ich falsch mache. – sweyrick

+3

Ich wollte nur Danke sagen !!!!!!! Die Dokumentation dazu ist piss arm. – whoisearth

3

In diesen Tagen können Sie dies durch erreichen nur einfach Hinzufügen der umgekehrten Beziehung zum fields Tupel.

In Ihrem Fall:

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

Nun ist die "Bar" -Set in Ihren Foo Antwort aufgenommen werden.

+0

Ich mache das gleiche, in der verschachtelten Antwort, sagen wir, es gibt 4 Bars im Zusammenhang, dann bekomme ich 4 leere Jsons, ich weiß nicht, warum das nicht funktioniert, Graf funktioniert ordnungsgemäß – Sugam

Verwandte Themen