diff --git a/model_utils/managers.py b/model_utils/managers.py index abb18b4..3c72585 100644 --- a/model_utils/managers.py +++ b/model_utils/managers.py @@ -96,6 +96,8 @@ class InheritanceQuerySet(QuerySet): else: return node + def get_subclass(self, *args, **kwargs): + return self.select_subclasses().get(*args, **kwargs) class InheritanceManager(models.Manager): @@ -108,8 +110,7 @@ class InheritanceManager(models.Manager): return self.get_query_set().select_subclasses(*subclasses) def get_subclass(self, *args, **kwargs): - return self.get_query_set().select_subclasses().get(*args, **kwargs) - + return self.get_query_set().get_subclass(*args, **kwargs) class QueryManager(models.Manager): diff --git a/model_utils/tests/tests.py b/model_utils/tests/tests.py index 8381815..e8df6a2 100644 --- a/model_utils/tests/tests.py +++ b/model_utils/tests/tests.py @@ -574,6 +574,12 @@ class InheritanceManagerTests(TestCase): self.child1) + def test_get_subclass_on_queryset(self): + self.assertEqual( + self.get_manager().all().get_subclass(pk=self.child1.pk), + self.child1) + + def test_prior_select_related(self): with self.assertNumQueries(1): obj = self.get_manager().select_related(