多模型Seraliz

2024-04-26 21:45:06 发布

您现在位置:Python中文网/ 问答频道 /正文

class SongsSerializer(serializers.ModelSerializer):
artist_name = Artist.objects.name
genre_name = Genre.objects.name
class Meta:
    model = Song

    fields = [
        'pk',
        'album',
        'art',
        'title',
        'song',
        'artist',
        'slug',
        'genre',
    ]
    read_only_fields = ['id']

序列化程序.py

所以有3种类型的模型类,每种类型都有一些外键关系

class Song(models.Model):
    album = models.ForeignKey(Album,on_delete=models.CASCADE)
    title = models.CharField(max_length=250)
    song = models.FileField(upload_to='songs')
    slug = models.SlugField(max_length=250,default='')
    genre = models.ForeignKey(Genre,on_delete=models.CASCADE)
    artist = models.ForeignKey(Artist,on_delete=models.CASCADE)

API的JSON响应为:

{pk: 1, album: 1, art: "http://localhost:8000/media/art_music/pp_PAgznjI.jpg", title: "Test", song: "http://localhost:8000/media/songs/Daaru_Band_-_Mankirt_Aulakh_DJJOhAL.Com_CtS7TAv.mp3", …}

它应该显示专辑名称、艺术家和流派,而不是将艺术家和流派显示为1


Tags: namealbumobjectssongtitleartistonmodels
1条回答
网友
1楼 · 发布于 2024-04-26 21:45:06

只需对ForeignKey使用序列化程序,它们也需要序列化。如果您忘记了只有ForeignKeyid将被序列化

class SongsSerializer(serializers.ModelSerializer):
        artist = ArtistSerializer()
        class Meta:
        model = Song

        fields = [
            'pk',
            'album',
            'art',
            'title',
            'song',
            'artist',
            'slug',
            'genre',
        ]
        read_only_fields = ['id']


class ArtistSerializer(serializers.ModelSerializer):
       fields = [
            'pk',  
            'name'
        ]

相关问题 更多 >