您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – Django Rest-Framework嵌套序列化器命令

5b51 2022/1/14 8:22:07 python 字数 2490 阅读 524 来源 www.jb51.cc/python

有没有办法订购嵌套的序列化器_set,例如按pk或时间戳排序. 因此,基本上将json数据中显示的song_set从最相邻的最新对象创建,在本例中为order_by(‘ – timestamp’)或order_by(‘ – pk’). Json数据 { "pk": 151, "album_name": "Name", "song_set": [ {

概述

因此,基本上将json数据中显示的song_set从最相邻的最新对象创建,在本例中为order_by(‘ – timestamp’)或order_by(‘ – pk’).

Json数据

{
    "pk": 151,"album_name": "Name","song_set": [
         {
           pk: 3,timestamp: '5 seconds'
         },{
           pk: 2,timestamp: '10 seconds'
         },{
           pk: 1,timestamp: '15 seconds'
         }
    ]
}

模型

class Album(models.Model):
    album_name     = models.CharField(max_length=100,blank=True)


class Song(models.Model):
    album          = models.ForeignKey('album.Album',default=1)
    timestamp      = models.DateTimeField(auto_Now_add=True,auto_Now=False)

Searilizer

class SongListSerializer(HyperlinkedModelSerializer):
    class Meta:
        model = Song
        fields = [
            'pk','timestamp'
        ]

class AlbumSerializer(HyperlinkedModelSerializer):
    song_set = SongListSerializer(many=True,read_only=True)
    class Meta:
        model = Album
        fields = [
            'pk','timestamp','song_set'
        ]
class AlbumSerializer(HyperlinkedModelSerializer):
    song_set = serializer.SerializerMethodField()
    class Meta:
        model = Album
        fields = [
            'pk','song_set'
        ]

    def get_song_set(self,instance):
        songs = instance.song_set.all().order_by('-timestamp')
        return SongListSerializer(songs,many=True).data

总结

以上是编程之家为你收集整理的python – Django Rest-Framework嵌套序列化器命令全部内容,希望文章能够帮你解决python – Django Rest-Framework嵌套序列化器命令所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶