mirror of
https://github.com/django/django.git
synced 2025-08-31 15:57:45 +00:00
Fixed #22550 -- Prohibited QuerySet.last()/reverse() after slicing.
This commit is contained in:
parent
84fb50df67
commit
eee34ef64c
5 changed files with 26 additions and 1 deletions
|
@ -314,6 +314,18 @@ If you wish to keep this restriction in the admin when editing users, set
|
|||
admin.site.unregister(User)
|
||||
admin.site.register(User, MyUserAdmin)
|
||||
|
||||
``QuerySet.reverse()`` and ``last()`` are prohibited after slicing
|
||||
------------------------------------------------------------------
|
||||
|
||||
Calling ``QuerySet.reverse()`` or ``last()`` on a sliced queryset leads to
|
||||
unexpected results due to the slice being applied after reordering. This is
|
||||
now prohibited, e.g.::
|
||||
|
||||
>>> Model.objects.all()[:2].reverse()
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
TypeError: Cannot reverse a query once a slice has been taken.
|
||||
|
||||
Miscellaneous
|
||||
-------------
|
||||
|
||||
|
|
|
@ -361,6 +361,9 @@ every *second* object of the first 10::
|
|||
|
||||
>>> Entry.objects.all()[:10:2]
|
||||
|
||||
Further filtering or ordering of a sliced queryset is prohibited due to the
|
||||
ambiguous nature of how that might work.
|
||||
|
||||
To retrieve a *single* object rather than a list
|
||||
(e.g. ``SELECT foo FROM bar LIMIT 1``), use a simple index instead of a
|
||||
slice. For example, this returns the first ``Entry`` in the database, after
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue