我试图找到最好的解决方案来排序我的数据库中的所有机器对象,并找到最后使用的deviceSerialNo。
deviceSerialNo是一个字符字段,其结构如下:第12344号
我的任务是按deviceSerialNo字段的子字符串(deviceSerialNo中“-”之后的所有内容)对所有Machine对象进行排序。last = Machine.objects.all().order_by('-deviceSerialNo').first().deviceSerialNo
或last2 = Machine.objects.all().order_by('-deviceSerialNo').annotate(search_index=StrIndex('deviceSerialNo', V('-'))).first().deviceSerialNo
有人能帮我按我上面提到的排序吗?
3条答案
按热度按时间ldioqlga1#
您可以按使用注解创建的字段进行排序:
就像你之前说的那样,我们从获取
-
字符的索引开始:然后,我们使用
Substr
来获取包含-
字符的第二部分:然后我们将它转换为IntegerField,排序并得到第一个对象。注意:我们可以得到第一个对象,因为
"-12344"
的整数转换是一个负数。jm81lzqq2#
如果号码有多个-并且想从反向中提取号码,请尝试以下操作:AB-12-12344
产量:12344台
)
感谢
6ju8rftf3#
可以使用extra()函数对对象进行排序:
对我很有效。