我有一个 ID 作为引用编号和这种格式的年份:
1/17
98/15
2/17
112/17
2345/17
67/17
9/17
8974/16
当我使用 django orm 获取我的 ID 时:
obj = MyIDs.objects.filter(run='run_1').order_by('ID')
我按照第一个数字的顺序取出它们:
1/17
112/17
2/17
2345/17
67/17
8974/16
9/17
98/15
但是/后面的数字是年份,我想按年份和编号排序。我可以在 mySQL 中轻松地做到这一点(使用子字符串索引等),如果它是一个 python 列表,但是因为我现在不想在将它们发送到我的 html 模板之前处理我的对象 - 有没有办法做到这一点在 orm 中?
最佳答案
Django 2.0 目前处于 alpha 阶段,但它有 StrIndex可能会有帮助的功能。我还没有测试过这个,但它是你可以做什么的草稿。斜杠将保留在字符串中,但由于您只是对其进行排序,所以我认为这对您来说不是问题。
MyIDs.objects.filter(run='run_1').annotate(
slash_pos=StrIndex(F('id'), '/')
).annotate(
y=Substr(F('id'), F('slash_pos'))
).order_by('y', 'id')
关于python - 按拆分字符串排序 django orm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44657566/