diff --git a/model_utils/managers.py b/model_utils/managers.py index 2d7611c..a412e91 100644 --- a/model_utils/managers.py +++ b/model_utils/managers.py @@ -6,6 +6,7 @@ from django.db import models from django.db.models.fields.related import OneToOneField from django.db.models.manager import Manager from django.db.models.query import QuerySet +from django.core.exceptions import ObjectDoesNotExist class InheritanceQuerySet(QuerySet): @@ -33,7 +34,12 @@ class InheritanceQuerySet(QuerySet): iter = super(InheritanceQuerySet, self).iterator() if getattr(self, 'subclasses', False): for obj in iter: - sub_obj = [getattr(obj, s) for s in self.subclasses if getattr(obj, s)] or [obj] + def get_attr(obj, s): + try: + return getattr(obj,s) + except ObjectDoesNotExist: + return None + sub_obj = [getattr(obj, s) for s in self.subclasses if get_attr(obj, s)] or [obj] sub_obj = sub_obj[0] if getattr(self, '_annotated', False): for k in self._annotated: