如何改变查询集中的元素位置?
我得到了:
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:]