当查询结果有很多对象时,QuerySet的缓存行为会导致使用大量内存。如果你需要对查询结果进行好几次循环,这种缓存是有意义的,但是对于 queryset 只循环一次的情况,缓存就没什么意义了。在这种情况下,iterator()可能会有所帮助。 当queryset非常大的时候可以使用oterator(),数据量不是很大的时候不需要使用,这样反而影响性能。 queryset = Book.objects.all(): for book in queryset.iterator(): ...