首页Django正文

关于django filter 排序问题

提问未结 5 39
webeasyplay
webeasyplayDjango实战会员2019年2月23日 12:55

是这样子的我某个栏位里面都是 字串+数字例如 test0001 test0501 test3402

我想filter查询时,ordert_by 条件无视前字串,只看数字的部分做排序 django能直接处理吗? 还是只能在python 里面另外运算

回帖
  • the5fire
    2019年2月23日 14:03

    如果有这这个中需求,看起来是你应该建字段(栏位)的时候就应该拆开,只是展示的时候合并在一起。

  • the5fire
    2019年2月23日 14:12

    补充一下,如果你的字串前缀都是一样的话,那么应该也能按数字排序,不过用起来还是怪怪的。

  • webeasyplay
    webeasyplay(楼主)
    2019年2月23日 15:03

    不过已经是这样了,前面也很多功能依赖了这个栏位

  • webeasyplay
    webeasyplay(楼主)
    2019年2月23日 15:17

    我说一下,我现在的解法,我把查询到的结果丢到一个list里面 list 每个成员都是一个dict,然后利用sorted 结合lamba去做排序 return_list = sorted(return_list, key=lambda x: int(x['big_barcode_number'].replace('test', ''))) 不过我知道这样肯定是很慢的

  • the5fire
    2019年2月27日 21:20

    没有办法,其实就两种方式,能在数据库层面做就在数据库层做,如果不行那只能在应用(程式)中做了。或者你改下你的表结构。通过程序把之前的一个字段拆成两个字段。