Django:根据字段值是否在列表中来命令QuerySet

时间:2012-09-07 16:53:02

标签: django sorting django-queryset

我试图通过模型字段值是否在列表中来订购Django QuerySet。

我知道您可以对此属性进行过滤,如下所示:

my_qs = MyModel.objects.filter(id__in=[1,3,5,11])

只会给我带有ids 1,3,5和11的MyModel对象。

我想订购这家酒店。使用上面的例子,我希望首先在列表中包含带有id的MyModel对象,但是仍然拥有所有其他MyModel对象,就在它们之后。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

my_qs = MyModel.objects.filter(id__in=[1,3,5,11])
not_my_qs = MyModel.objects.exclude(id__in=[1,3,5,11])

from itertools import chain
result_list = list(chain(my_qs, not_my_qs))