gpt4 book ai didi

python - Django Rest Framework,关系 POST 选项名称

转载 作者:太空宇宙 更新时间:2023-11-03 18:00:57 25 4
gpt4 key购买 nike

想知道如何在 POST Tracks 的专辑“选项”中显示专辑名称而不是“专辑对象”,请参阅下图。

http://s27.postimg.org/8n2uakd9f/Screen_Shot_2014_12_29_at_6_29_07_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)

序列化器.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": []
}
]

提前谢谢

最佳答案

您可以通过在模型中定义方法 __str__(或 Python 2 中的 __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-framework 和 Django admin 中),就会使用此函数

关于python - Django Rest Framework,关系 POST 选项名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27687207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com