为了账号安全,请及时绑定邮箱和手机立即绑定

JSON 数组乱序

JSON 数组乱序

温温酱 2023-10-11 16:22:08
我有一个 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 })
查看完整描述

1 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

ordering如果你想保持一致的顺序,你需要在 Choice 模型元中设置选项。

class Choice(Smodels.Model):
  class Meta:
    ordering = ['-id']

来自文档:

警告

订购不是免费操作。添加到订单中的每个字段都会给您的数据库带来一定的成本。您添加的每个外键也将隐式包含其所有默认顺序。

如果查询未指定顺序,则结果将以未指定的顺序从数据库返回。仅当按唯一标识结果中每个对象的一组字段排序时,才能保证特定的排序。例如,如果名称字段不唯一,则按其排序并不能保证具有相同名称的对象始终以相同的顺序出现。


查看完整回答
反对 回复 2023-10-11
  • 1 回答
  • 0 关注
  • 70 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信