• en
  • Language: ru
  • Documentation version: 2.0

1. Как упорядочить набор запросов по возрастанию или убыванию?

Упорядочение набора запросов может быть достигнуто методом order_by. Нам нужно передать поле, по которому мы должны упорядочить (по возрастанию/по убыванию) результат. Запрос выглядит следующим образом

>>> User.objects.all().order_by('date_joined') # For ascending
<QuerySet [<User: yash>, <User: John>, <User: Ricky>, <User: sharukh>, <User: Ritesh>, <User: Billy>, <User: Radha>, <User: Raghu>, <User: rishab>, <User: johny>, <User: paul>, <User: johny1>, <User: alien>]>
>>> User.objects.all().order_by('-date_joined') # For descending; Not '-' sign in order_by method
<QuerySet [<User: alien>, <User: johny1>, <User: paul>, <User: johny>, <User: rishab>, <User: Raghu>, <User: Radha>, <User: Billy>, <User: Ritesh>, <User: sharukh>, <User: Ricky>, <User: John>, <User: yash>]>

Вы можете передать несколько полей в order_by.

User.objects.all().order_by('date_joined', '-last_login')

Взгляд на SQL

SELECT "auth_user"."id",
       -- More fields
       "auth_user"."date_joined"
FROM "auth_user"
ORDER BY "auth_user"."date_joined" ASC,
         "auth_user"."last_login" DESC