Python 如何更改查询集中的位置元素?

Python 如何更改查询集中的位置元素?,python,django,Python,Django,我得到: 如何更改视图中的位置元素,例如将第5个(model_list.id=5)元素放在列表的顶部 模板: model_list = Models.objects.filter(date_of_addition__gte=today).order_by('name') 相反: Toyota Audi BWM Chevrolet Honda VW 使用del删除项目。使用insert将项目放置在您希望的任何位置: Audi BWM Chevrolet Honda Toyota VW 或者,

我得到:

如何更改视图中的位置元素,例如将第5个(model_list.id=5)元素放在列表的顶部

模板:

model_list = Models.objects.filter(date_of_addition__gte=today).order_by('name')
相反:

Toyota
Audi
BWM
Chevrolet
Honda
VW

使用
del
删除项目。使用
insert
将项目放置在您希望的任何位置:

Audi
BWM
Chevrolet
Honda
Toyota
VW
或者,您可以只构建一个新列表:

>>> lst = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> item5 = lst[5]
>>> del(lst[5])
>>> lst
['a', 'b', 'c', 'd', 'e', 'g']
>>> lst.insert(0, item5)
>>> lst
['f', 'a', 'b', 'c', 'd', 'e', 'g']

这可能就是你想要做的

newlst = [lst[5]] + lst[:5] + lst[6:]
或者这个

model_list = Models.objects.filter(date_of_addition__gte=today,id__gte=5).order_by('name')
很难说——基于这个问题——你想做什么。

举个例子:

model_list = list(Models.objects.filter(date_of_addition__gte=today).order_by('name'))
model_list = [ m for m in model_list if m.id >= 5 ]

这不是工作。这不是一个简单的列表,这是对象。切片在QuerySet上工作得很好。您只是按名称排序。代码按名称排序。您的“And get:”不能是您提供的代码的输出。查询集不是列表,因此这不起作用。不过,如果您先将其转换为列表,它会起作用。@Daniel Roseman:列表切片在QuerySet上对我来说很好。@Marcin但它并不像您想象的那样,它会向数据库发出一个单独的查询。另外,您不能在查询集上使用
del
insert
。@Daniel Roseman:在这种情况下,我看不出先转换为列表有什么问题。
model_list = list(Models.objects.filter(date_of_addition__gte=today).order_by('name'))
model_list = [ m for m in model_list if m.id >= 5 ]
for m in [model_list[4]] + model_list[0:4] + model_list[5:]