Если вы звоните .order_by(..)
, вы делаете , а не сортируете данный набор запросов, вы создаете новый, который является копией старого, но там, где элементы упорядочены. Вы можете думать об этом аналогично строкам: вы не можете изменять строку, вы можете только сделать (измененную) копию строки. Строго говоря, вы можете изменить состояние QuerySet
, но обычно это , а не хорошая идея, изменяя значения, удерживаемые QuerySet
(и базовым .query
), вполне вероятно,что вы нарушите какое-то предположение и, таким образом, создадите неверный запрос или откажетесь от механизма кэширования.
Таким образом, вы должны сконструировать набор запросов, например:
def vote(request):
persons = Person.objects.all()
transactions = Transaction.objects.<b>order_by('date')</b>
return render(
request,
'liste.html',
{'persons': persons, 'transactions': transaction}
)
Extraпримечания :
- , поскольку
person
- это набор из Person
с, лучше назвать его person<b>s</b>
, а не person
. - пожалуйста, не используйте
locals()
это анти-шаблон, так как вы неясно, что вы передаете в контекст. Если позже вы захотите оптимизировать представление, например, вы можете удалить некоторую переменную по ошибке. Кроме того, вы легко можете передать слишком переменных, больше чем те, которые вам действительно нужны.