From 6ab6da083cbf44c1aba59585789cbc85de79cc11 Mon Sep 17 00:00:00 2001 From: Javier Garcia Sogo Date: Fri, 6 Jul 2012 22:12:58 +0200 Subject: [PATCH 1/2] patch to issue#16 --- model_utils/managers.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/model_utils/managers.py b/model_utils/managers.py index 45139eb..54ce032 100644 --- a/model_utils/managers.py +++ b/model_utils/managers.py @@ -33,7 +33,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: + 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: From 575a5e134034b4310e3bd90b5e4bef7c8aeb0356 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Garc=C3=ADa=20Sogo?= Date: Mon, 5 Nov 2012 13:43:42 +0100 Subject: [PATCH 2/2] avoid plain except --- model_utils/managers.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/model_utils/managers.py b/model_utils/managers.py index 54ce032..7cc2ab8 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): @@ -36,7 +37,7 @@ class InheritanceQuerySet(QuerySet): def get_attr(obj, s): try: return getattr(obj,s) - except: + 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]