首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django Rest框架,Relations选项名

Django Rest框架,Relations选项名
EN

Stack Overflow用户
提问于 2014-12-29 10:34:33
回答 2查看 342关注 0票数 1

想知道如何显示专辑的名称,而不是“相册对象”在帖子轨道‘相册’选项,参考下面的图像。

PM.png

这是我的模型和序列化器。

models.py

代码语言:javascript
复制
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

代码语言:javascript
复制
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')

相册数据(示例):

代码语言:javascript
复制
[
    {
        "name": "Album1", 
        "artist": "Artist1", 
        "year": "2012", 
        "origin": "Somewhere", 
        "tracks": []
    }, 
    {
        "name": "Album2", 
        "artist": "Artist2", 
        "year": "2014", 
        "origin": "Somewhere", 
        "tracks": []
    }
]

提前谢谢你

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-29 10:49:07

您可以通过在模型中定义方法__str__ (或在Python2中定义__unicode__ )来自定义此标签:

代码语言:javascript
复制
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管理)时,就会使用此函数。

票数 1
EN

Stack Overflow用户

发布于 2014-12-29 10:51:38

您可以使用CustomRelatedField来控制如何在Django REST框架中显示对象,而不必更改模型的__str____unicode__方法。

http://www.django-rest-framework.org/api-guide/relations/#custom-relational-fields

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27687207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档