From 617ec2af01228ef4d68c7693a150bbccefbe28a2 Mon Sep 17 00:00:00 2001 From: Ryan Senkbeil Date: Wed, 19 Feb 2014 15:28:01 -0600 Subject: [PATCH] Fix InheritanceManager when the model has a self reference. Otherwise, we reach max recursion depth. --- model_utils/managers.py | 1 + model_utils/tests/models.py | 1 + 2 files changed, 2 insertions(+) diff --git a/model_utils/managers.py b/model_utils/managers.py index 61248ef..ab1fd0d 100644 --- a/model_utils/managers.py +++ b/model_utils/managers.py @@ -106,6 +106,7 @@ class InheritanceQuerySetMixin(object): 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 e65eaa7..ea46d0f 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):