mirror of
				https://github.com/django/django.git
				synced 2025-10-30 17:16:10 +00:00 
			
		
		
		
	Fixed bug with Meta.ordering being ignored when slicing a single item off a QuerySet. Thanks, Gábor Fawkes.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@2970 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -269,8 +269,8 @@ class Model(object): | ||||
|         q._params.extend([param, param, getattr(self, self._meta.pk.attname)]) | ||||
|         try: | ||||
|             return q[0] | ||||
|         except IndexError, e: | ||||
|             raise self.DoesNotExist, e.args | ||||
|         except IndexError: | ||||
|             raise self.DoesNotExist, "%s matching query does not exist." % self.__class__._meta.object_name | ||||
|  | ||||
|     def _get_next_or_previous_in_order(self, is_next): | ||||
|         cachename = "__%s_order_cache" % is_next | ||||
|   | ||||
| @@ -129,7 +129,7 @@ class QuerySet(object): | ||||
|                     return list(self._clone(_offset=offset, _limit=limit))[::k.step] | ||||
|             else: | ||||
|                 try: | ||||
|                     return self._clone(_offset=k, _limit=1).get() | ||||
|                     return list(self._clone(_offset=k, _limit=1))[0] | ||||
|                 except self.model.DoesNotExist, e: | ||||
|                     raise IndexError, e.args | ||||
|         else: | ||||
| @@ -193,6 +193,7 @@ class QuerySet(object): | ||||
|     def get(self, *args, **kwargs): | ||||
|         "Performs the SELECT and returns a single object matching the given keyword arguments." | ||||
|         clone = self.filter(*args, **kwargs) | ||||
|         # clean up SQL by removing unneeded ORDER BY | ||||
|         if not clone._order_by: | ||||
|             clone._order_by = () | ||||
|         obj_list = list(clone) | ||||
|   | ||||
| @@ -56,6 +56,10 @@ API_TESTS = """ | ||||
| >>> Article.objects.order_by('headline')[1:3] | ||||
| [Article 2, Article 3] | ||||
|  | ||||
| # Getting a single item should work too: | ||||
| >>> Article.objects.all()[0] | ||||
| Article 4 | ||||
|  | ||||
| # Use '?' to order randomly. (We're using [...] in the output to indicate we | ||||
| # don't know what order the output will be in. | ||||
| >>> Article.objects.order_by('?') | ||||
|   | ||||
		Reference in New Issue
	
	Block a user