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

-1 投票
3 回答
993 浏览
提问于 2025-04-16 21:10

我得到了:

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

我该如何改变视图中元素的位置,比如把第5个(model_list.id=5)元素放到列表的最上面呢?

模板:

{% for m in model_list %}
<li>{{m.name}}</li>
{% endfor %}

然后得到:

Toyota
Audi
BWM
Chevrolet
Honda
VW

而不是:

Audi
BWM
Chevrolet
Honda
Toyota
VW

3 个回答

0

这可能是你想要做的事情

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 ]

根据你的问题,很难判断你到底想做什么。

0

使用 del 可以删除一个项目。使用 insert 可以把一个项目放到你想要的位置:

>>> 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:]
1

针对你的例子:

for m in [model_list[4]] + model_list[0:4] + model_list[5:]

撰写回答