python - 按拆分字符串排序 django orm

标签 python mysql django orm

我有一个 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/

相关文章:

c++ - Boost-Python:在路径中加载带有unicode字符的python模块

PHP 仅从 mySQL 获取最近 7 天的数据

django - 在 Django 中使用嵌套的 @transaction.commit_on_success

python - django.db.close_connection() 的替代方法

python - pip freeze 报告版本号而不是某些包的 git sha

python - Python 3 不显示更改后的 __name__ 属性是否有原因?

python - 发送消息时禁用登录 Flask-Mail

mysql - 我需要在 mysql 中创建一个具有动态值范围的查询

java - 保存到数据库使按钮无响应

python - 在 Django 中使用电子邮件地址或用户名登录用户