猿问

JSON 数组乱序

我有一个 React/Django 应用程序,用户可以在其中回答多项选择问题。我按照这个确切的顺序将“choices”数组渲染到 UI 上。


    {

        "id": 2,

        "question_text": "Is Lebron James the GOAT?",

        "choices": [

            {

                "id": 5,

                "choice_text": "No",

                "votes": 0,

                "percent": 0

            },

            {

                "id": 4,

                "choice_text": "Yes",

                "votes": 1,

                "percent": 100

            }

        ],

    }

当我在开发模式下选择一个选项时,我会向 Django 发送一个请求,以增加该选项的投票计数器,并且它将以相同的顺序发回带有更新投票的响应。当我尝试使用 npm run build 在生产模式中选择一个选项时,顺序会被切换。


    {

        "id": 2,

        "question_text": "Is Lebron James the GOAT?",

        "choices": [

            {

                "id": 4,

                "choice_text": "Yes",

                "votes": 1,

                "percent": 50

            },

            {

                "id": 5,

                "choice_text": "No",

                "votes": 1,

                "percent": 50

            }

        ]

    }

我认为 JSON 数组的顺序必须保留。谁能解释为什么会发生这种情况?我几乎可以肯定这个问题源自 Django。这是 Django 上的函数视图。


@api_view(['POST'])

def vote_poll(request, poll_id): 

    if request.method == 'POST':

        poll = Poll.objects.get(pk=poll_id)


        selected_choice = Choice.objects.get(pk=request.data['selected_choice_id'])

        selected_choice.votes += 1

        selected_choice.save()

        poll_serializer = PollAndChoicesSerializer(poll)

        return Response({ 'poll': poll_serializer.data })


温温酱
浏览 71回答 1
1回答

汪汪一只猫

ordering如果你想保持一致的顺序,你需要在 Choice 模型元中设置选项。class Choice(Smodels.Model):   class Meta:     ordering = ['-id']来自文档:警告订购不是免费操作。添加到订单中的每个字段都会给您的数据库带来一定的成本。您添加的每个外键也将隐式包含其所有默认顺序。如果查询未指定顺序,则结果将以未指定的顺序从数据库返回。仅当按唯一标识结果中每个对象的一组字段排序时,才能保证特定的排序。例如,如果名称字段不唯一,则按其排序并不能保证具有相同名称的对象始终以相同的顺序出现。
随时随地看视频慕课网APP

相关分类

Python
我要回答