想知道如何显示专辑的名称,而不是“相册对象”在帖子轨道‘相册’选项,参考下面的图像。
PM.png
这是我的模型和序列化器。
models.py
class Album(models.Model):
name = models.CharField(max_length=100)
artist = models.CharField(max_length=100)
year = models.CharField(max_length=4)
origin = models.CharField(max_length=50)
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)serializers.py
class TrackSerializer(serializers.ModelSerializer):
class Meta:
model = Track
fields = ('order', 'title', 'duration','album')
class AlbumSerializer(serializers.ModelSerializer):
tracks = TrackSerializer(many=True, read_only=True)
class Meta:
model = Album
fields = ('name', 'artist', 'year', 'origin', 'tracks')相册数据(示例):
[
{
"name": "Album1",
"artist": "Artist1",
"year": "2012",
"origin": "Somewhere",
"tracks": []
},
{
"name": "Album2",
"artist": "Artist2",
"year": "2014",
"origin": "Somewhere",
"tracks": []
}
]提前谢谢你
发布于 2014-12-29 10:49:07
您可以通过在模型中定义方法__str__ (或在Python2中定义__unicode__ )来自定义此标签:
class Album(models.Model):
name = models.CharField(max_length=100)
artist = models.CharField(max_length=100)
year = models.CharField(max_length=4)
origin = models.CharField(max_length=50)
def __str__(self):
return "%s (by %s)" % (self.name, self.artist)每当Django必须打印对此对象的引用(包括Django -rest-框架和Django管理)时,就会使用此函数。
发布于 2014-12-29 10:51:38
您可以使用CustomRelatedField来控制如何在Django REST框架中显示对象,而不必更改模型的__str__或__unicode__方法。
http://www.django-rest-framework.org/api-guide/relations/#custom-relational-fields
https://stackoverflow.com/questions/27687207
复制相似问题