按分割字符串 django orm 排序

2024-04-16

我有一个 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 模板之前处理它们 - 有没有办法做到这一点在奥姆?


Django 2.0 目前处于 alpha 阶段,但它具有StrIndex https://docs.djangoproject.com/en/dev/ref/models/database-functions/#django.db.models.functions.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')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按分割字符串 django orm 排序 的相关文章

随机推荐