django - переупорядочьте queryset после разрезания его

Если у вас есть строка и вы знаете индекс, который хотите поместить в строку, вы можете использовать две переменные:

string temp = temp.Substring(0,index) + textbox1.Text + ":" + textbox2.Text +temp.Substring(index);

Но если это простая строка, вы можете использовать ее следующим образом:

string temp = string.Format("your text goes here {0} rest of the text goes here : {1} , textBox1.Text , textBox2.Text ) ;"
7
задан shanyu 2 June 2009 в 11:35
поделиться

2 ответа

Нет, нет способа сделать это. order_by - это операция в базе данных, но когда вы нарезаете набор запросов, он оценивается и после этого не возвращается в базу данных.

Похоже, вы уже знаете решение: run reversed () для оцененных qs.

qs = reversed(Foo.objects.all()[:5])
13
ответ дан 6 December 2019 в 06:25
поделиться

order_by позволяет упорядочивать SQL в базе данных. Вы уже используете это, а затем нарезаете его. В этот момент результаты загружаются в память. Если вы хотите изменить их порядок, вам нужно использовать для этого сортировку в памяти Python, а не сортировку ORM в базе данных.

В вашем случае Дэниел уже дал лучшее решение: поскольку вы просто хотите отсортировать по тому же полю, но в другом порядке, просто переверните список, который у вас есть:

qs = Foo.objects.all()[:5]
objs = reversed(qs)

Если бы вы хотели отсортировать по какому-то другому полю, вы бы использовали функцию sorted () с настраиваемой ключевой функцией:

qs = Foo.objects.all()[:5]
objs = sorted(qs, key=lambda o: o.some_other_field)
14
ответ дан 6 December 2019 в 06:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: