backwards comptatible get_queryset, for Django < 1.6

This commit is contained in:
Thomas Schreiber 2013-12-31 17:30:11 +01:00
parent 5ae92dba27
commit 910bcc7830
2 changed files with 21 additions and 2 deletions

View file

@ -173,6 +173,8 @@ class InheritanceManager(models.Manager):
def get_queryset(self):
return InheritanceQuerySet(self.model)
get_query_set = get_queryset
def select_subclasses(self, *subclasses):
return self.get_queryset().select_subclasses(*subclasses)
@ -196,11 +198,16 @@ class QueryManager(models.Manager):
return self
def get_queryset(self):
qs = super(QueryManager, self).get_queryset().filter(self._q)
try:
qs = super(QueryManager, self).get_queryset().filter(self._q)
except AttributeError:
qs = super(QueryManager, self).get_query_set().filter(self._q)
if self._order_by is not None:
return qs.order_by(*self._order_by)
return qs
get_query_set = get_queryset
class PassThroughManager(models.Manager):
"""
@ -235,11 +242,16 @@ class PassThroughManager(models.Manager):
return getattr(self.get_queryset(), name)
def get_queryset(self):
qs = super(PassThroughManager, self).get_queryset()
try:
qs = super(PassThroughManager, self).get_queryset()
except AttributeError:
qs = super(PassThroughManager, self).get_query_set()
if self._queryset_cls is not None:
qs = qs._clone(klass=self._queryset_cls)
return qs
get_query_set = get_queryset
@classmethod
def for_queryset_class(cls, queryset_cls):
return create_pass_through_manager_for_queryset_class(cls, queryset_cls)
@ -254,6 +266,8 @@ def create_pass_through_manager_for_queryset_class(base, queryset_cls):
qs = super(_PassThroughManager, self).get_queryset()
return qs._clone(klass=queryset_cls)
get_query_set = get_queryset
def __reduce__(self):
# our pickling support breaks for subclasses (e.g. RelatedManager)
if self.__class__ is not _PassThroughManager:

View file

@ -197,6 +197,7 @@ class FeaturedManager(models.Manager):
kwargs["using"] = self._db
return ByAuthorQuerySet(self.model, **kwargs).filter(feature=True)
get_query_set = get_queryset
class DudeQuerySet(models.query.QuerySet):
@ -218,6 +219,8 @@ class AbidingManager(PassThroughManager):
def get_queryset(self):
return DudeQuerySet(self.model).abiding()
get_query_set = get_queryset
def get_stats(self):
return {
"abiding_count": self.count(),
@ -246,6 +249,8 @@ class SpotManager(PassThroughManager):
def get_queryset(self):
return super(SpotManager, self).get_queryset().filter(secret=False)
get_query_set = get_queryset
class SpotQuerySet(models.query.QuerySet):
def closed(self):