From ade818fd7db2be2d3cb2d6e26b6cc1e06dae6865 Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Sat, 15 Mar 2008 14:15:43 +0000 Subject: [PATCH] queryset-refactor: Sped up QuerySet.get() by using fast paths through the iterator maze. git-svn-id: http://code.djangoproject.com/svn/django/branches/queryset-refactor@7248 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/db/models/query.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/django/db/models/query.py b/django/db/models/query.py index 3d2e6cea1e..5a82988e3d 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -173,14 +173,14 @@ class _QuerySet(object): keyword arguments. """ clone = self.filter(*args, **kwargs) - obj_list = list(clone) - if len(obj_list) < 1: + num = len(clone) + if num == 1: + return clone._result_cache[0] + if not num: raise self.model.DoesNotExist("%s matching query does not exist." % self.model._meta.object_name) - elif len(obj_list) > 1: - raise self.model.MultipleObjectsReturned("get() returned more than one %s -- it returned %s! Lookup parameters were %s" - % (self.model._meta.object_name, len(obj_list), kwargs)) - return obj_list[0] + raise self.model.MultipleObjectsReturned("get() returned more than one %s -- it returned %s! Lookup parameters were %s" + % (self.model._meta.object_name, num, kwargs)) def create(self, **kwargs): """