序列化时保持json数据的顺序

时间:2018-05-08 07:22:48

标签: django django-rest-framework

我有这样的数据集。

@client.event
async def on_ready():
    print("Ready when you are")
    while True:
        bop = input("")
        for server in client.servers:
            for channel in server.channels:
                if channel.name == "general":
                    await client.send_message(channel, bop)

当我序列化它时,我的json文件每次看起来都不一样。因为'轨道'的顺序每次都在变化。 我在看'to_representation',但由于这个数据没有Key,我没能像我预期的那样实现它。

任何人都可以给出提示,以确保'曲目'始终保持相同的顺序。

修改 这是我到目前为止,

{
    'album_name': 'Dear John',
    'artist': 'Loney Dear',
    'tracks': [
        'Airport Surroundings',
        'Everything Turns to You',
        'I Was Only Going Out',        
    ]
}

1 个答案:

答案 0 :(得分:1)

您遇到的问题是数据库问题而不是序列化程序问题。 您从未告诉数据库如何对曲目进行排序,因此每次数据库都会以不同的顺序返回曲目。

Track模型(非序列化程序)中添加此Meta

 class Track(models.Model):
     ...fields

     class Meta:
         ordering = ("pk",)

这将导致您的曲目始终按主键排序。 您可以按任何其他字段订购,也可以按多个字段订购

ordering = ("music_type", "name")