Add iter_queryset method to utils.iterators module.
parent
4aef603946
commit
95845b4eda
|
@ -16,6 +16,8 @@
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from functools import wraps, partial
|
from functools import wraps, partial
|
||||||
|
from django.core.paginator import Paginator
|
||||||
|
|
||||||
|
|
||||||
def as_tuple(function=None, *, remove_nulls=False):
|
def as_tuple(function=None, *, remove_nulls=False):
|
||||||
if function is None:
|
if function is None:
|
||||||
|
@ -42,3 +44,15 @@ def split_by_n(seq:str, n:int):
|
||||||
while seq:
|
while seq:
|
||||||
yield seq[:n]
|
yield seq[:n]
|
||||||
seq = seq[n:]
|
seq = seq[n:]
|
||||||
|
|
||||||
|
|
||||||
|
def iter_queryset(queryset, itersize:int=20):
|
||||||
|
"""
|
||||||
|
Util function for iterate in more efficient way
|
||||||
|
all queryset.
|
||||||
|
"""
|
||||||
|
paginator = Paginator(queryset, itersize)
|
||||||
|
for page_num in paginator.page_range:
|
||||||
|
page = paginator.page(page_num)
|
||||||
|
for element in page.object_list:
|
||||||
|
yield element
|
||||||
|
|
Loading…
Reference in New Issue