需求:网站活动列表需要根据活动的状态进行排序。活动的状态(state)分别等于-1,0,1,2,3。排序的顺序为1,0,3,2,-1。
解决方案:
正常order_by的倒序(desc),正序(asc)不能满足业务需求。
单个字段的不规则排序:
from sqlalchemy import case
activities = Activity.query.order_by(case(value=Actity.state, whens={1:1,0:2,3:3,2:4,-1:5})).all()
多个字段不规则排序参考order_by多种条件自定义排序。