Dan*_*mov 2 python django generator-expression django-queryset lazy-sequences
有一个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)
);
Run Code Online (Sandbox Code Playgroud)
当循环通过时members,它将首先获得specificMember然后使用任何延迟加载逻辑原始db.Members使用.
有没有办法在Django和Python中做同样的事情?
使用itertools.chain.就像是:
import itertools
original_members = .... # get an iterator of the data
members = itertools.chain([specific_member], original_members)
Run Code Online (Sandbox Code Playgroud)
chain函数返回一个迭代器.迭代器首先返回第一个参数中序列的值,该参数是包含specific_member的单元素列表.然后它开始返回值original_members,我假设这是一个懒惰的序列.
| 归档时间: |
|
| 查看次数: |
561 次 |
| 最近记录: |