2016-07-16 6 views
0

In den Serializer Beziehungen Teil auf der offiziellen Website von Django, bietet es ein Beispiel für Musikalben, um eine Beziehung darzustellen und zu erklären.Verwirrt zu Serializer Beziehungen in 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) 

Später interagiert es Modell mit Serializer.

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

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

Das Ergebnis ist:

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

Ich bin verwirrt variable Spuren im AlbumSerializer. Es scheint, dass die variablen Spuren für Album und Track-Modell irrelevant sind. Wie verhält es sich mit den Album- und Track-Modellen? Wie ruft es auf und ruft Unicode Methode des Track-Modells im AlbumSerializer auf?

Antwort