Найти - Пользователи
Полная версия: Выборка в обратном порядке
Начало » Django » Выборка в обратном порядке
1 2
Александр Кошелев
tezro
post_list = Post.objects.all() - в дефолтном порядке
post_list = Post.objects.all().reverse() - в обратном.

Вроде это и есть задача.
Нет. Сортировка должна быть задана явно – либо в order_by вызове, либо в Meta у модели. В иных случаях reverse ничего не делает. Другими словами, reverse работает на уровне самой Джанги, переворачивая условия сортировки, но не опускается до БД.
tezro
Daevaorn
tezro
post_list = Post.objects.all() - в дефолтном порядке
post_list = Post.objects.all().reverse() - в обратном.

Вроде это и есть задача.
Нет. Сортировка должна быть задана явно – либо в order_by вызове, либо в Meta у модели. В иных случаях reverse ничего не делает. Другими словами, reverse работает на уровне самой Джанги, переворачивая условия сортировки, но не опускается до БД.
По-моему, мы спорим об одном и том же :)

Если выборка сделана, то перевернуть её можно реверсом, либо предварительно по “отрицательному” полю. Но, реверс просто перевернёт всё, а “-pk” отсортирует. Эт я к тому, что в задаче не стоит условия сортировать - просто перевернуть… Но я думаю Mutagena всё понял.

Хм, в любом случае идёт обращение к базе…
http://code.djangoproject.com/browser/django/trunk/django/db/models/sql/query.py#L488

Почему не list.reverse() просто… А. Ну лишняя операция же.
poltergeist
tezro
docs.djangoproject.com
Also, note that reverse() should generally only be called on a QuerySet which has a defined ordering (e.g., when querying against a model which defines a default ordering, or when using order_by()). If no such ordering is defined for a given QuerySet, calling reverse() on it has no real effect (the ordering was undefined prior to calling reverse(), and will remain undefined afterward).
Если нужен обратный порядок, то прямой порядок должен тоже быть явно задан, иначе смысла делать reverse нет … логически.

P.S. “Explicit is better than implicit.”
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB