Python 降序的Django排序是错误的

Python 降序的Django排序是错误的,python,django,Python,Django,所以我在Django做了一个排行榜。除了喝醉酒之外,它做的大部分事情都很棒 那不正常!70高于540和200!它应该在第三位而不是第一位!为什么会发生这种情况,我如何解决它 我使用总计或totalpoints按降序排列排行榜,使用以下命令:participants=Participant.objects.order_by('-totalpoints') 70岁失踪时,这一切都没有发生。现在,当它在那里时,就会出现小故障。此外,所有挑战的总分都会增加,如果出现问题,无论是ASCII还是其他什么,

所以我在Django做了一个排行榜。除了喝醉酒之外,它做的大部分事情都很棒

那不正常!70高于540和200!它应该在第三位而不是第一位!为什么会发生这种情况,我如何解决它

我使用总计或
totalpoints
按降序排列排行榜,使用以下命令:
participants=Participant.objects.order_by('-totalpoints')

70岁失踪时,这一切都没有发生。现在,当它在那里时,就会出现小故障。此外,所有挑战的总分都会增加,如果出现问题,无论是ASCII还是其他什么,它都会崩溃

我们将感谢您的帮助,谢谢

编辑:将最后一个字段替换为整数字段,现在按升序排列


编辑:当挑战1、2、3、4组合在一起时,它们在字符域中,随后转换为整数。所以它是一个整数,放在一个字段中。除非现在用整数字段替换了总计点,否则排行榜将首先排序空字段。

您必须将
总计点存储为字符串而不是整数。这意味着您看到的是按“字母顺序”排列的数字(由于
-
,数字顺序相反)


如果将
totalpoints
字段存储在
IntegerField
中,应该会得到更好的结果。

必须将
totalpoints
存储为字符串而不是整数。这意味着您看到的是按“字母顺序”排列的数字(由于
-
,数字顺序相反)


如果将
totalpoints
字段存储在
IntegerField
中,应该会得到更好的结果。

您没有显示任何代码,因此很难确定,但这看起来像是对数字字符串进行排序的情况。你的totalpoints数据不是数字,而是字符串

如果您对一组碰巧看起来像数字的字符串进行排序,则它们的排序与数字不同。第一个数字是最重要的,将决定排序顺序:

>>> sorted(['200', '70', '540'], reverse=True)
['70', '540', '200']
如果将它们按数字排序,则它们工作正常:

>>> sorted([200, 70, 540], reverse=True)
[70, 200, 540]

您没有显示任何代码,因此很难说清楚,但这看起来像是对数字字符串进行排序的情况。你的totalpoints数据不是数字,而是字符串

如果您对一组碰巧看起来像数字的字符串进行排序,则它们的排序与数字不同。第一个数字是最重要的,将决定排序顺序:

>>> sorted(['200', '70', '540'], reverse=True)
['70', '540', '200']
如果将它们按数字排序,则它们工作正常:

>>> sorted([200, 70, 540], reverse=True)
[70, 200, 540]

你确定总数是整数吗?如果“70”、“540”和“200”是按字典顺序排序的字符串,则顺序是正确的。如果不是这样,你必须向我们展示你的代码。我把问题改了一点现在检查一下你确定全点是整数吗?如果“70”、“540”和“200”是按字典顺序排序的字符串,则顺序是正确的。如果不是这样,你必须向我们展示你的代码。我把问题改了一点现在检查一下好眼力!您可以在回答中添加以下内容:如果是这种情况,OP应该将字段设置为
IntegerField
,或者使用以下技巧:好眼力!您可以添加到这个答案中,如果是这种情况,OP应该将字段设置为
整型字段
,或者使用以下技巧: