我有一个 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 回答
![?](http://img1.sycdn.imooc.com/5458506b0001de5502200220-100-100.jpg)
汪汪一只猫
TA贡献1898条经验 获得超8个赞
ordering
如果你想保持一致的顺序,你需要在 Choice 模型元中设置选项。
class Choice(Smodels.Model): class Meta: ordering = ['-id']
来自文档:
警告
订购不是免费操作。添加到订单中的每个字段都会给您的数据库带来一定的成本。您添加的每个外键也将隐式包含其所有默认顺序。
如果查询未指定顺序,则结果将以未指定的顺序从数据库返回。仅当按唯一标识结果中每个对象的一组字段排序时,才能保证特定的排序。例如,如果名称字段不唯一,则按其排序并不能保证具有相同名称的对象始终以相同的顺序出现。
添加回答
举报
0/150
提交
取消