gpt4 book ai didi

python - Django Rest-Framework 嵌套序列化器顺序

转载 作者:太空狗 更新时间:2023-10-29 17:27:39 28 4
gpt4 key购买 nike

有没有办法对嵌套序列化器 _set 进行排序,例如按 pktime-stamp 排序。

所以基本上按照 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)

序列化器

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'
]

最佳答案

您可以使用 SerializerMethodField 并为此编写自定义方法。

class AlbumSerializer(HyperlinkedModelSerializer):
song_set = serializers.SerializerMethodField()
class Meta:
model = Album
fields = [
'pk',
'timestamp',
'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 嵌套序列化器顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48247490/

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