我不希望任何排序应用于查询。所以,我有一个QuerySet
跟随:
question_obj = Question.objects.filter(pk__in=[100,50,27,35,10,42,68]).order_by()
但是,当我检索结果时,它们始终按questionID
排序。我迭代question_obj
,这就是结果:
for obj in question_obj:
obj.questionID
结果显示如下:
10L
27L
35L
42L
50L
68L
100L
答案 0 :(得分:2)
如果要以与主键列表相同的顺序显示对象,则可以使用in_bulk
创建由pk键入的字典。然后,您可以使用列表推导来生成问题列表。
>>> pks = [100,50,27,35,10,42,68]
>>> questions_dict = Question.objects.in_bulk(pks)
>>> questions = [questions_dict[pk] for pk in pks]
>>> for question in questions:
print question.pk
100
50
27
35
...
答案 1 :(得分:0)
卢克,使用Source,呃,Docs!是的,就是这样!
答案 2 :(得分:0)
你可以做一些原始SQL(使用FIELD())alá:
Ordering by the order of values in a SQL IN() clause
应该允许您按照列表中建议的顺序检索它们。
使用ORM运行自定义SQL:
https://docs.djangoproject.com/en/dev/topics/db/sql/#executing-custom-sql-directly