2013-01-10 4 views
6

Comment incluez-vous les champs associés dans l'API? Chaque Foo a un couple de Bar qui lui sont liés, comme des images ou quoi que ce soit d'autre.Django Rest Framework - Relations inverses

Comment puis-je afficher ces barres dans la ressource de Foo?

avec son tastypie quitter simple, je ne suis pas sûr avec Django Rest Framework ..

Répondre

8

Je l'ai travailler! Shweeet!

Ok c'est ce que je l'ai fait:

sérialiseurs créé, Vues et URLS pour l'objet Bar comme décrit dans les Quickstart docs de Django REST Framework.

Ensuite, dans le Foo sérialiseur Je l'ai fait:

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 

son vrai simple actualy, les docs juste ne montrer bien je dirais ..

+0

Cela n'a pas fonctionné pour moi. J'ai une erreur disant que l'URL n'a pas pu être résolue. J'ai ajouté l'URL dans mon reste/urls.py et cela fonctionne. Je ne sais pas ce que je fais mal. – sweyrick

+3

Je voulais juste vous dire merci !!!!!!! La documentation sur ceci est pisse pauvre. – whoisearth

3

Ces jours-ci, vous pouvez y parvenir en tout simplement l'ajout de la relation inverse au tuple fields.

Dans votre cas:

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

Maintenant, le "bar" -set sera inclus dans votre réponse Foo.

+0

Je fais pareil, dans la réponse imbriquée, disons qu'il y a 4 barres liées alors je reçois 4 jsons vides, je ne sais pas pourquoi cela ne fonctionne pas, count fonctionne correctement – Sugam