Можно ли определить пользовательский QuerySet, который всегда будет возвращать вывод .iterator()
при его повторении, сохраняя все остальные функциональные возможности QuerySet? Обертка существующего QuerySet тоже подойдет.
В настоящее время единственное решение, которое я нашел, - это ужасный класс-обёртка:
class IteratorQuerySet:
def __init__(self, qs):
self._qs = qs
def __iter__(self):
return self._qs.iterator()
def __getitem__(self, *args, **kwargs):
return self._qs.__getitem__(*args, **kwargs)
def __getattr__(self, attr):
return getattr(self._qs, attr)
Недостатком является то, что на самом деле это не QuerySet, а просто перенаправляет все атрибуты и вызовы getitem в qs.
Какие разные углы я могу попробовать?