这是来自查询集方法的django 文档iterator()
:
QuerySet 通常在内部缓存其结果,以便重复评估不会导致额外的查询。相比之下,iterator() 将直接读取结果,而无需在 QuerySet 级别进行任何缓存(在内部,默认迭代器调用 iterator() 并缓存返回值)。对于返回大量只需要访问一次的对象的 QuerySet,这可以带来更好的性能并显着减少内存。
读完后,我仍然感到困惑:关于提高性能和减少内存的那一行表明我们应该只使用该iterator()
方法。有人可以举一些好的和坏的案例iterator()
用法的例子吗?
即使查询结果没有被缓存,如果他们真的想多次访问模型,有人不能做以下事情吗?
saved_queries = list(Model.objects.all().iterator())