【发布时间】:2011-09-15 22:42:41
【问题描述】:
有一个 Django 视图使用特定过滤器从数据库中加载 Member 对象。
现在我需要更改此逻辑以首先显示特定的Member,然后让其余的按照自然顺序进行。
最直接的方法是立即执行查询,获取列表,删除并在开头插入项目。不过我很好奇是否还有办法利用QuerySet 的懒惰本性。
在 C# 中,我会写:
IEnumerable<Member> members = db.Members; // db.Members is lazy
members = Enumerable.Union( // construct a lazy sequence that traverses its arguments
new [] { specificMember },
members.Where(m => m != specificMember)
);
由于循环会通过members,它会首先获得specificMember,然后使用无论原来db.Members使用的任何延迟加载逻辑。
有没有办法在 Django 和 Python 中做同样的事情?
【问题讨论】:
标签: python django django-queryset lazy-sequences generator-expression