Made negative indexing on QuerySet instances raise an assertion error (previously
it just returned incorrect results). git-svn-id: http://code.djangoproject.com/svn/django/trunk@2992 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
b63157c616
commit
0c8ac0972c
|
@ -95,6 +95,9 @@ class QuerySet(object):
|
||||||
|
|
||||||
def __getitem__(self, k):
|
def __getitem__(self, k):
|
||||||
"Retrieve an item or slice from the set of results."
|
"Retrieve an item or slice from the set of results."
|
||||||
|
assert (not isinstance(k, slice) and (k >= 0)) \
|
||||||
|
or (isinstance(k, slice) and (k.start is None or k.start >= 0) and (k.stop is None or k.stop >= 0)), \
|
||||||
|
"Negative indexing is not supported."
|
||||||
if self._result_cache is None:
|
if self._result_cache is None:
|
||||||
if isinstance(k, slice):
|
if isinstance(k, slice):
|
||||||
# Offset:
|
# Offset:
|
||||||
|
|
|
@ -283,6 +283,16 @@ Traceback (most recent call last):
|
||||||
...
|
...
|
||||||
AssertionError: Cannot combine queries once a slice has been taken.
|
AssertionError: Cannot combine queries once a slice has been taken.
|
||||||
|
|
||||||
|
# Negative slices are not supported, due to database constraints.
|
||||||
|
# (hint: inverting your ordering might do what you need).
|
||||||
|
>>> Article.objects.all()[-1]
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
AssertionError: Negative indexing is not supported.
|
||||||
|
>>> Article.objects.all()[0:-5]
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
AssertionError: Negative indexing is not supported.
|
||||||
|
|
||||||
# An Article instance doesn't have access to the "objects" attribute.
|
# An Article instance doesn't have access to the "objects" attribute.
|
||||||
# That's only available on the class.
|
# That's only available on the class.
|
||||||
|
|
Loading…
Reference in New Issue