gpt4 book ai didi

python - 如何控制 django REST 框架返回的 JSON 的顺序?

转载 作者:行者123 更新时间:2023-12-05 07:55:54 27 4
gpt4 key购买 nike

我想了解要编写什么级别的代码来控制 django 序列化程序返回的顺序。必须在模板级别、模型级别或序列化程序级别完成。什么决定了任何序列化程序返回的 JSON 中字段的顺序?在我的示例中,考虑这些序列化程序类:

class FilterURLSerializer(serializers.Serializer):
active = serializers.CharField(read_only=True)
inactive = serializers.CharField(read_only=True)


class FacetedFilterOptionsSerializer(serializers.Serializer):
name = serializers.CharField(read_only=True)
slug = serializers.CharField(read_only=True)
count = serializers.IntegerField(read_only=True)
active = serializers.BooleanField(read_only=True)
urls = FilterURLSerializer(read_only=True)


class FacetedFilterSerializer(serializers.Serializer):
name = serializers.CharField(read_only=True)
slug = serializers.CharField(read_only=True)
options = FacetedFilterOptionsSerializer(source='options')

以及返回的 JSON 数据:

{'name': u'Skill level', 'slug': u'skill', 'options': [{'name': u"I'm Learning", 'slug': u'beginner', 'count': 0, 'active': False, 'urls': {'active': u'/en-US/search?skill=beginner', 'inactive': u'/en-US/search'}}, {'name': u"I'm an Expert", 'slug': u'advanced', 'count': 0, 'active': False, 'urls': {'active': u'/en-US/search?skill=advanced', 'inactive': u'/en-US/search'}}, {'name': u'Intermediate', 'slug': u'intermediate', 'count': 0, 'active': False, 'urls': {'active': u'/en-US/search?skill=intermediate', 'inactive': u'/en-US/search'}}]}

我想知道是什么决定了 JSON 中这些字段的顺序,我该如何更改它?

最佳答案

如果您希望对字段名称进行排序,您可以尝试以下操作:

myList = list(yourmodel.objects.values('filed1','field2').filter(someid=i).orderby('column'))

关于python - 如何控制 django REST 框架返回的 JSON 的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29241063/

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