如何用ORM自定义排序

ORM连接的数据库不同,方法也不同

postgresql:

a.extra(select={"new_order":"position(status in '2,3,4,1')"}).order_by("new_order")

a是queryset对象,new_order 是新的自定义的字段名,status是排序的字段,“2,3,4,1”是你自定义的顺序,也可以是字符串类型

mysql:

a.extra(select={"new_order":'field(status,"2,3,4,1")'}).order_by("new_order")

规则类似,但有所区别,这是我自己探索出来的,希望对大家有所帮助

如果写sql  的话就很简单

select * from alert
order by(  

case class 
        
when '2' then 1,
        
when '3' then 2,
        
when '4' then 3,
        
when '1' then 4
    
else '' 
end 
)

posted @ 2019-09-10 16:51  赵伟航  阅读(1021)  评论(0编辑  收藏  举报