diff --git a/model_utils/managers.py b/model_utils/managers.py index 61248ef2..ab1fd0df 100644 --- a/model_utils/managers.py +++ b/model_utils/managers.py @@ -106,6 +106,7 @@ def _get_subclasses_recurse(self, model, levels=None): rel for rel in model._meta.get_all_related_objects() if isinstance(rel.field, OneToOneField) and issubclass(rel.field.model, model) + and model is not rel.field.model ] subclasses = [] if levels: diff --git a/model_utils/tests/models.py b/model_utils/tests/models.py index e65eaa74..ea46d0fa 100644 --- a/model_utils/tests/models.py +++ b/model_utils/tests/models.py @@ -25,6 +25,7 @@ class InheritanceManagerTestParent(models.Model): related = models.ForeignKey( InheritanceManagerTestRelated, related_name="imtests", null=True) normal_field = models.TextField() + related_self = models.OneToOneField("self", related_name="imtests_self", null=True) objects = InheritanceManager() def __unicode__(self):