问 题
这是我的django代码不能按预期工作:
posts = post.objects.all()。order_by ('-added')[:20]#by'added'
post_list = dict([(obj.id,obj)for obj in posts])
#...一些操作与字典元素去这里...
posts_to_return = [post for post_id,post in post_list.items()]#order by'id'now!
有没有办法保留原始元素的顺序,所以帖子将按添加在 posts_to_return ?
谢谢!
编辑: python 2.6,django 1.3
解决方案
使用sorteddict而不是dict( from django.utils.datastructures import sorteddict )
sorteddict维护它的顺序是 keyorder 属性。所以你可以操纵排序,而不需要重建dict,如果你想的话。例如,要反转sorteddict的顺序,只需使用 keyorder.reverse()
post_list = sorteddict([(obj.id,obj)for obj在帖子中))
#颠倒邮政订单就地
post_list.keyorder.reverse()