django排序怎么将字符型字段按整型排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django排序怎么将字符型字段按整型排序相关的知识,希望对你有一定的参考价值。

搞这个问题搞了很久,终于自己给弄出来啦,虽然这个提问时间过了这么久了,不过以后说不定也会有人遇到同样的问题,一搜就搜到这里了,所以还是把自己的方法附上
本人用mysql数据库,chart表中有个time字段,字符型,想让查询结果按照time字段的整型排序
list=Chart.objects.extra(select='t':'time+0')
list=list.extra(order_by=["t"])
相当于sql语句
SELECT *,time+0 AS t FROM chart ORDER BY t
问题完美解决
参考技术A sort(key=int)

mysql自动排序为啥10在1后面不在9后面

如果排序的字段属于字符型的那么就会出现题主提问中的情况,因为数据库引擎是按照对字符串的排序规则实施排序的(从字符串左边第一个字符开始往后逐位比较的,例如“1”<"10,"10"<"2",“10"<"3",..."10"<"9"等)。
解办法,可以将该排序字段的数据类型改为数字,如果无法改为数字的话,则可以将字符类型转换为数字类型进行排序。
参考技术A 如果排序的字段属于字符型的那么就会出现题主提问中的情况,因为数据库引擎是按照对字符串的排序规则实施排序的(从字符串左边第一个字符开始往后逐位比较的,例如“1”<"10,"10"<"2",“10"<"3",..."10"<"9"等)。
解办法,可以将该排序字段的数据类型改为数字,如果无法改为数字的话,则可以将字符类型转换为数字类型进行排序。
参考技术B 数据格式问题,文本格式排序会出现这类

以上是关于django排序怎么将字符型字段按整型排序的主要内容,如果未能解决你的问题,请参考以下文章

请问django如何将字符型字段按数值型排序,如‘12,123,1111,133’,排序后结果为12,123,133,1111,在线等

在 django 中按模型字段的子字符串对对象进行排序

在 django(postgres 后端)中按数字字符串排序查询结果

mysql 字符串排序

Mysql数据库按照varchar字符串类型排序和按照int整型类型排序的区别和注意点及解决方案

Django 管理员:自定义排序