Django:如何为子弹场获得正确的数值排序?

问题描述

弹头字段定义和模型排序如下所示。

来自models.py:

class Ayah(models.Model):
    suraya = models.SlugField(max_length=8,unique=True)

    class Meta:
    ordering = ['suraya']

但是,结果顺序有不希望的结果。

17-81-15    
17-82-15    
17-85-15    
2-186-2 
2-256-3

所需的顺序是破折号前的数字顺序。 因此,无论什么东西2都应该排在17之前。

可能有一种简单的方法可以通过正则表达式来完成此操作。

解决方法

根据您拥有的数据量,最简单的解决方案是添加仅将前导数字作为IntegerField()的另一列,然后将其用于排序。

class Ayah(models.Model):
    suraya = models.SlugField(max_length=8,unique=True)
    suraya_sort = models.IntegerField()

    class Meta:
        ordering = ['suraya_sort']

然后覆盖save()方法,以始终将第一个数字自动存储到排序列中。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...