相关文章推荐
力能扛鼎的饼干  ·  中国海油2020届高校毕业生招聘公告·  1 年前    · 
跑龙套的牛肉面  ·  中国“莱特兄弟”:模拟飞行台上的“飞行家”-新华网·  1 年前    · 
唠叨的猴子  ·  陈云的三次自我检讨---党建网·  1 年前    · 
严肃的蜡烛  ·  宝可梦训练师访谈(三)----小蓝: ...·  1 年前    · 
忐忑的拖把  ·  oblivious - ...·  1 年前    · 
小百科  ›  python - Django Rest-Framework 嵌套序列化器顺序 - SegmentFault 思否
嵌套 序列化 时间戳 django
飘逸的蘑菇
1 年前
segmentfault segmentfault
注册登录
问答 博客 标签 活动
发现
✓ 使用“Bing”搜本站 使用“Google”搜本站 使用“百度”搜本站 站内搜索
注册登录
  1. 首页
  2. 问答
  3. Stack Overflow 翻译
  4. 问答详情

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

社区维基
1
发布于
1 月 9 日
新手上路,请多包涵

有没有办法订购嵌套序列化 _set ,例如订购 pk 或 time-stamp 。

所以基本上顺序 song_set 下面的 json 数据显示从最近到最新创建的对象,在本例中为 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'

原文由 laa 发布,翻译遵循 CC BY-SA 4.0 许可协议

Stack Overflow 翻译 python json django rest django-rest-framework
阅读 159
2 个回答
得票 最新
社区维基
1
发布于
1 月 9 日
✓ 已被采纳

您可以使用 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

原文由 Muhammad Hassan 发布,翻译遵循 CC BY-SA 4.0 许可协议

社区维基
1
发布于
1 月 9 日

将 排序 元参数添加到您的 Song 模型:

 class Song(models.Model):
    album = models.ForeignKey('album.Album', default=1)
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
    class Meta:
        ordering = ['timestamp', 'pk']
 
推荐文章
力能扛鼎的饼干  ·  中国海油2020届高校毕业生招聘公告
1 年前
跑龙套的牛肉面  ·  中国“莱特兄弟”:模拟飞行台上的“飞行家”-新华网
1 年前
唠叨的猴子  ·  陈云的三次自我检讨---党建网
1 年前
严肃的蜡烛  ·  宝可梦训练师访谈(三)----小蓝: ブルー! - 知乎
1 年前
忐忑的拖把  ·  oblivious - 萌娘百科萬物皆可萌的百科全書
1 年前
Link管理   ·   Sov5搜索   ·   小百科
小百科 - 百科知识指南