Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 20, 2009 21:21:34

Mutagena
От:
Зарегистрирован: 2009-10-18
Сообщения: 295
Репутация: +  0  -
Профиль   Отправить e-mail  

Выборка в обратном порядке

Подскажите, как выбрать все элементы из базы в обратной порядке. В djangobook описано, как применять обратную сортировку, только если выбираешь по определённому критерию, а как выбрать все записи непонятно.
Вот так я выбираю все записи:

post_list = Post.objects.all()

А как выбрать тоже самое, но в обратном порядке?



Офлайн

#2 Дек. 20, 2009 21:28:37

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

Выборка в обратном порядке

Post.objects.all().order_by('-id')



Офлайн

#3 Дек. 20, 2009 21:50:14

Mutagena
От:
Зарегистрирован: 2009-10-18
Сообщения: 295
Репутация: +  0  -
Профиль   Отправить e-mail  

Выборка в обратном порядке

poltergeist благодарю :)



Офлайн

#4 Дек. 20, 2009 21:58:56

dissdoc
От:
Зарегистрирован: 2009-12-12
Сообщения: 273
Репутация: +  0  -
Профиль   Отправить e-mail  

Выборка в обратном порядке

А если я не ошибаюсь можно проще))) Причем с подходом DRY

Добавить в модель подкласс

class Meta:
ordering = ('-id',)



Офлайн

#5 Дек. 20, 2009 22:18:58

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Выборка в обратном порядке

dissdoc
А если я не ошибаюсь можно проще)))
А чем это проще?
dissdoc
Причем с подходом DRY
Причем тут DRY?

Вообще, ради одного юзкейса менять поведение всей системы глупо.



Офлайн

#6 Дек. 20, 2009 22:24:18

Mutagena
От:
Зарегистрирован: 2009-10-18
Сообщения: 295
Репутация: +  0  -
Профиль   Отправить e-mail  

Выборка в обратном порядке

Daevaorn, в моём случае это подошло, так как когда выбираю данные из этой таблицы, их всегда нужно выбирать в обратном порядке.



Офлайн

#7 Дек. 20, 2009 22:32:33

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Выборка в обратном порядке

Mutagena
Daevaorn, в моём случае это подошло, так как когда выбираю данные из этой таблицы, их всегда нужно выбирать в обратном порядке.
Ок. Только хочу предупредить, что
poltergeist
Post.objects.all().order_by('-id')
не дает обратный порядок относительно
Mutagena
Post.objects.all()
т.к. порядок в общем случае не определен в исходном варианте.



Офлайн

#8 Дек. 21, 2009 00:13:19

tezro
От:
Зарегистрирован: 2009-12-09
Сообщения: 90
Репутация: +  0  -
Профиль   Отправить e-mail  

Выборка в обратном порядке

Mutagena
Подскажите, как выбрать все элементы из базы в обратной порядке. В djangobook описано, как применять обратную сортировку, только если выбираешь по определённому критерию, а как выбрать все записи непонятно.
Вот так я выбираю все записи:

post_list = Post.objects.all()

А как выбрать тоже самое, но в обратном порядке?
http://docs.djangoproject.com/en/dev/ref/models/querysets/#reverse

post_list = Post.objects.all().reverse()

Сортировать по “-id” неправильно. А если сортировка идёт по другому PrimaryKey или в Мета другая сортировка?

Post.objects.all().order_by('-pk') хотя бы…



Офлайн

#9 Дек. 21, 2009 00:59:29

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Выборка в обратном порядке

tezro
reverse работает только если сортировка указана явно или дефолтом в моделе.



Офлайн

#10 Дек. 21, 2009 01:24:58

tezro
От:
Зарегистрирован: 2009-12-09
Сообщения: 90
Репутация: +  0  -
Профиль   Отправить e-mail  

Выборка в обратном порядке

Daevaorn

Mutagena
Подскажите, как выбрать все элементы из базы в обратной порядке.
post_list = Post.objects.all() - в дефолтном порядке
post_list = Post.objects.all().reverse() - в обратном.

Вроде это и есть задача. Сортировка по PK или другому полю, вроде уже другое решение.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version