gpt4 book ai didi

Django Order_BY 自定义函数

转载 作者:行者123 更新时间:2023-12-02 04:51:51 24 4
gpt4 key购买 nike

我在模型 roll_numb 中有字段。 roll_numb 的值如下。

070-001
070-007
070-343
080-002
080-008

当我 order_by roll_numb 时,排序如上所示。我想按 - 分割 roll_numb 并按余数排序。 (即 001、002、008)

代码

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')

如果您希望始终对模型进行排序,只需将该注释移至模型管理器即可:

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()

关于Django Order_BY 自定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34559094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com