Python Django:在DRF中序列化外部字段时返回值而不是键

Python Django:在DRF中序列化外部字段时返回值而不是键,python,django,django-rest-framework,Python,Django,Django Rest Framework,我想询问如何获取ForeignKey(或ManyToManyField)文本值以显示在get请求中 下面将生成一个JSON,其中包含键引用选项或外键 [ { "album_name": "Album_1", "grade": "1", "artist": 2 } ] 但我想把它展示出来 [ { "a

我想询问如何获取
ForeignKey
(或
ManyToManyField
)文本值以显示在
get
请求中

下面将生成一个JSON,其中包含
引用
选项
外键

[
    {
        "album_name": "Album_1",
        "grade": "1",
        "artist": 2
    }
]
但我想把它展示出来

[
    {
        "album_name": "Album_1",
        "grade": "Bad",
        "artist": "Artist_name_NN"
    }
]
我在Django Rest Framworks自己的网站上或在SO上或通过各种博客帖子找到的与
ForeignKey
相关的示例并不十分清晰,而且往往会通过使用间接关系使解释/解决方案复杂化

我正在寻找一个最小可行的解决方案,用于在下面设置的
GET
请求中出现的值

## Models.py
class Artist(models.Model):
    artist_name = models.CharField(max_length=100)
    comment = models.CharField(max_length=100)

    def __str__(self):
        return (self.artist_name)

class Album(models.Model):
    GRADE = (
        ("1", "Bad"),
        ("2", "Average"),
        ("3", "Good"),
    )
    album_name = models.CharField(max_length=100)
    grade = models.CharField(max_length=100, choices=GRADE)
    artist = models.ForeignKey(Artist, blank=True, on_delete=models.CASCADE)

    def __str__(self):
        return (self.album_name)

## views.py
class AlbumViewSet(viewsets.ModelViewSet):
    queryset = Album.objects.all()
    serializer_class = AlbumSerializer

## Serializers.py
class AlbumSerializer(serializers.ModelSerializer):

    class Meta:
        model = Album
        fields = ['album_name', 'grade', 'artist']

drf的序列化程序关系部分就是一个很好的例子

您可以使用
StringRelatedField
实现您想要的功能。例如:

类序列化程序(serializers.ModelSerializer): artist=serializers.StringRelatedField() 类元: 型号=相册 字段=['album_name','grade','Artister']
这将使用艺术家的
\uuuu str\uuuu
方法填充该字段。

谢谢,它适用于ForeignField,有没有同样简单的方法从多个字段中获得相同的内容?现在,我为StringRelatedField()获得了“api.Artist.None”。使用源定义字段时,例如Artist=StringRelatedField(source='Artist',many=True),它起作用了吗