Author: lukeplant Date: 2006-05-23 14:55:30 -0500 (Tue, 23 May 2006) New Revision: 2970
Modified: django/trunk/django/db/models/base.py django/trunk/django/db/models/query.py django/trunk/tests/modeltests/ordering/models.py Log: Fixed bug with Meta.ordering being ignored when slicing a single item off a QuerySet. Thanks, G?\195?\161bor Fawkes. Modified: django/trunk/django/db/models/base.py =================================================================== --- django/trunk/django/db/models/base.py 2006-05-23 19:34:43 UTC (rev 2969) +++ django/trunk/django/db/models/base.py 2006-05-23 19:55:30 UTC (rev 2970) @@ -269,8 +269,8 @@ 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 Modified: django/trunk/django/db/models/query.py =================================================================== --- django/trunk/django/db/models/query.py 2006-05-23 19:34:43 UTC (rev 2969) +++ django/trunk/django/db/models/query.py 2006-05-23 19:55:30 UTC (rev 2970) @@ -129,7 +129,7 @@ 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 @@ 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) Modified: django/trunk/tests/modeltests/ordering/models.py =================================================================== --- django/trunk/tests/modeltests/ordering/models.py 2006-05-23 19:34:43 UTC (rev 2969) +++ django/trunk/tests/modeltests/ordering/models.py 2006-05-23 19:55:30 UTC (rev 2970) @@ -56,6 +56,10 @@ >>> 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('?') --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django updates" group. To post to this group, send email to django-updates@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-updates -~----------~----~----~----~------~----~------~--~---