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

时间:2011-07-09 15:01:24

标签: python django

我得到了:

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

如何在视图中更改位置元素,例如将5th(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 :(得分:1)

对于你的例子:

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

答案 1 :(得分: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:]

答案 2 :(得分: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 ]

很难说 - 根据问题 - 你要做什么。

相关问题