有一个 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 中做同样的事情?