我在模型中有字段roll_numb
. Theroll_numb
具有如下值。
070-001
070-007
070-343
080-002
080-008
When i order_by
roll_numb
排序如上。
我想将 roll_numb 分割为-
并按余数排序。 (即 001、002、008)
Code
class Meta:
ordering = ['roll_numb']
使用自定义字段注释您的查询集:
from django.db.models.functions import Substr
YourModel.objects.annotate(roll_split=Substr('roll_numb', 5)).order_by('roll_split')
如果你想always订购模型后,只需将该注释移至模型管理器即可:
class YourModelManager(models.Manager):
def get_queryset(self):
qs = super(YourModelManager, self).get_queryset()
return qs.annotate(roll_split=Substr('roll_numb', 5)).order_by('roll_split')
class YourModel(models.Model):
objects = YourModelManager()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)