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

标签 python json django rest django-rest-framework

有没有办法对嵌套序列化器 _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/

相关文章:

python - 如何使用 feedparser 从 RSS 站点解析更多信息?

python - 将子字符串列表匹配到 Python 中的字符串列表

json - Spring ScopedProxy session Bean JSON 在 JSON 响应中导出 targetClass 详细信息

jquery - 将 json 数组发送到 ashx 处理程序

python - 在 Django 中创建了一个新模型。但它没有出现在数据库中

python - Django自定义表单验证IP地址和域名

python - 在 BeautifulSoup 4.7.0+ 中,如何选择在其属性之一中不包含指定文本的所有元素

python - 循环分组数据框中的组

javascript - 评估 JSON 字符串 - eval() 与 new Function()

python - Django 如何在 View 中保存模型