Django:如何获得 slug 字段的正确数字排序?

问题描述 投票:0回答:1

slug 字段定义和模型的排序如下所示。

来自 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-whatever 应该在 17-whatever 之前按顺序排列。

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

django-models operator-precedence slug
1个回答
1
投票

根据您拥有的数据量,最简单的解决方案是添加另一列,仅将前导数字作为

IntegerField()
,然后使用它进行排序。

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

    class Meta:
        ordering = ['suraya_sort']

然后覆盖

save()
方法以始终自动将第一个数字存储到排序列。

© www.soinside.com 2019 - 2024. All rights reserved.