ps:由于项目中需要用到 根据name进行指定顺序的查询 来进行前端页面的固定顺序展示
from django.db.models import Case, When
pk_list = [10,18, 1]
preserved = Case(*[When(pk=pk, then=pos) for pos, pk in enumerate(pk_list)])
queryset = MyModel.objects.filter(pk__in=pk_list).order_by(preserved)
# pos表示下标 pk表示id
## 同理也可以根据其他字段进行指定排序
from django.db.models import Case, When
name_list = ['张三', '李四', '王五']
preserved = Case(*[When(name=name, then=pos) for pos, name in enumerate(name_list)])
queryset = MyModel.objects.filter(pk__in=pk_list).order_by(preserved)
参考原文地址:http://codingdict.com/questions/4684