Django

Code

Changeset 7248

Show
Ignore:
Timestamp:
03/15/08 09:15:43 (8 months ago)
Author:
mtredinnick
Message:

queryset-refactor: Sped up QuerySet?.get() by using fast paths through the iterator maze.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/queryset-refactor/django/db/models/query.py

    r7247 r7248  
    174174        """ 
    175175        clone = self.filter(*args, **kwargs) 
    176         obj_list = list(clone) 
    177         if len(obj_list) < 1: 
     176        num = len(clone) 
     177        if num == 1: 
     178            return clone._result_cache[0] 
     179        if not num: 
    178180            raise self.model.DoesNotExist("%s matching query does not exist." 
    179181                    % self.model._meta.object_name) 
    180         elif len(obj_list) > 1: 
    181             raise self.model.MultipleObjectsReturned("get() returned more than one %s -- it returned %s! Lookup parameters were %s" 
    182                     % (self.model._meta.object_name, len(obj_list), kwargs)) 
    183         return obj_list[0] 
     182        raise self.model.MultipleObjectsReturned("get() returned more than one %s -- it returned %s! Lookup parameters were %s" 
     183                % (self.model._meta.object_name, num, kwargs)) 
    184184 
    185185    def create(self, **kwargs):