使用列表作为过滤条件时的Django ORM对象序列

时间:2017-06-09 17:36:30

标签: django django-models django-orm

当我们使用列表作为过滤条件时,Django ORM是否保证过滤器序列?

result = Model.objects.filter(id__in=id_list, user__id=user.id)

id_list就像:[1, 2, 3, 4, 5] 结果是否始终保持序列后跟id_list?

Django Document在哪里提到这个? 谢谢!

1 个答案:

答案 0 :(得分:0)

pk_list = [10, 2, 1]
clauses = ' '.join(['WHEN id=%s THEN %s' % (pk, i) for i, pk in enumerate(pk_list)])
ordering = 'CASE %s END' % clauses
queryset = Model.objects.filter(pk__in=pk_list).extra( select={'ordering': ordering}, order_by=('ordering',))`