2016-07-16 2 views
0

Dans la partie relations Serializer sur le site officiel de Django, il fournit un exemple d'albums de musique pour représenter et expliquer une relation.Confused to Relation sérialiseur dans Django Rest

class Album(models.Model): 
    album_name = models.CharField(max_length=100) 
    artist = models.CharField(max_length=100) 

class Track(models.Model): 
    album = models.ForeignKey(Album, related_name='tracks') 
    order = models.IntegerField() 
    title = models.CharField(max_length=100) 
    duration = models.IntegerField() 

    class Meta: 
     unique_together = ('album', 'order') 
     ordering = ['order'] 

    def __unicode__(self): 
     return '%d: %s' % (self.order, self.title) 

Plus tard, il interagit avec Serializer.

class AlbumSerializer(serializers.ModelSerializer): 
    tracks = serializers.StringRelatedField(many=True) 

    class Meta: 
     model = Album 
     fields = ('album_name', 'artist', 'tracks') 

Le résultat est:

{ 
    'album_name': 'Things We Lost In The Fire', 
    'artist': 'Low', 
    'tracks': [ 
     '1: Sunflower', 
     '2: Whitetail', 
     '3: Dinosaur Act', 
     ... 
    ] 
} 

Je suis confus pistes variables dans le AlbumSerializer. Il semble que les pistes de variable ne sont pas pertinentes pour le modèle Album et piste. Comment est-il lié aux modèles Album et Track? Comment il appelle et invoque unicode méthode de modèle de piste dans l'AlbumSerializer?

Répondre