Django:使用 order_by 对数值进行排序

标签 django sorting

我处于必须通过用于存储街道地址的 CharField 输出相当大的对象列表的情况。

我的问题是,显然数据是按 ASCII 代码排序的,因为它是一个 Charfield,具有可预测的结果......它像这样对数字进行排序;

1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 21....

现在显而易见的步骤是将 Charfield 更改为正确的字段类型(假设为 IntegerField),但是它无法工作,因为某些地址可能有公寓......比如“128A”。

我真的不知道如何正确订购这个..

最佳答案

如果您确定该字段中只有整数,您可以让数据库通过 extra 将其转换为整数。方法,并按以下顺序排序:

MyModel.objects.extra(
    select={'myinteger': 'CAST(mycharfield AS INTEGER)'}
).order_by('myinteger')

关于Django:使用 order_by 对数值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2969348/

相关文章:

python - 带有 ./manager runserver 的 Django 运行良好,而 Django + uwsgi 返回 404

python - 如何解析 HTML 表格

python - 在 Django 中的 URL 反向中使用 request.META.get ('HTTP_REFERER' )

java 。如何将两个最初排序的队列合并到一个队列中? (没有链表或其他东西)

java - 在集合之间复制顺序

django - 在 django 中的 s3 上存储图像和缩略图

对 Range-v3 压缩容器进行排序 - 我可以解压吗?

C - 从数组中删除重复项并将这些重复项存储在另一个数组中

c - 如何对结构数组进行qsort

javascript - 用于制作论坛的文本到 HTML 转换器