From 82b69f6b79a31796046d8d50f96d8053f4260b79 Mon Sep 17 00:00:00 2001 From: aleontiev Date: Wed, 31 Mar 2021 14:46:22 -0700 Subject: [PATCH] add get_manager to django-cte --- django_cte/cte.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/django_cte/cte.py b/django_cte/cte.py index 635bae4..03c3097 100644 --- a/django_cte/cte.py +++ b/django_cte/cte.py @@ -74,7 +74,7 @@ def join(self, model_or_queryset, *filter_q, **filter_kw): if isinstance(model_or_queryset, QuerySet): queryset = model_or_queryset.all() else: - queryset = model_or_queryset._default_manager.all() + queryset = self.get_manager(model_or_queryset).all() join_type = filter_kw.pop("_join_type", INNER) query = queryset.query @@ -89,6 +89,16 @@ def join(self, model_or_queryset, *filter_q, **filter_kw): query.join(QJoin(parent, self.name, self.name, on_clause, join_type)) return queryset + def get_manager(self, model): + """Get a manager for this model + + The model's default_manager will be used by default. + This method may be over-riden to use custom managers + + :returns: A manager. + """ + return model._default_manager + def queryset(self): """Get a queryset selecting from this CTE @@ -100,7 +110,7 @@ def queryset(self): :returns: A queryset. """ cte_query = self.query - qs = cte_query.model._default_manager.get_queryset() + qs = self.get_manager(cte_query.model).get_queryset() query = CTEQuery(cte_query.model) query.join(BaseTable(self.name, None))