SQLAlchemy ORM order_by 自定义排序

场景描述

关于产品的排序,需要根据汉字或者不规则顺序和多个字段进行排序

打个比喻:(status==1,modify_user==None,status==3,status==2)

解决办法

使用case来解决。

 from sqlalchemy import case

 query.order_by(case(((User.status =='1',1),(User.modify_user.is_(None),2),(User.status =='3',3),(User.status.is_(None),4),(User.status =='2',5))))

上面的case里面是一个元组,然后(USer.status =='1',1),后面的1代表的是顺序,前面的是筛选条件,下面以此类推。

 

多字段排序可以用上面的方法,如果只按照一个字段来排序,可以用下面的方法。

 from sqlalchemy import case

 officees_query.order_by(case(value=User.status, where={'1': 1, '3':2, '2': 3}))

 

posted @ 2022-06-08 20:09  你的小可爱吖  阅读(947)  评论(0编辑  收藏  举报