QuerySet Django, который всегда возвращает iterator () - PullRequest
0 голосов
/ 09 мая 2018

Можно ли определить пользовательский 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.

Какие разные углы я могу попробовать?

...