Я бы сделал это в виде вместо шаблона.Я предлагаю следующее (если вы используете представления на основе классов, я бы перегрузил метод get_context_data
, чтобы добавить сообщения, отсортированные так, как я хочу:
def get_context_data(self, **kwargs):
context = super(). get_context_data(**kwargs)
# Now we add messages sorted in ascending order by date
# I'm assuming you are using some kind of DetailView or similar
# which has an 'object' field
context['messages'] = self.object.messages.order_by('date')
return context
Затем в вашем шаблоне вы должны выполнить итерациюmessages
переменная напрямую вместо object.messages.all
.
Более того, если вы обычно хотите, чтобы сообщения в таком порядке, я добавил бы это к атрибуту Meta
class ordering
Ваша Message
модель выглядит так:
class Message(Model):
# whatever is your model
class Meta:
ordering = ['date']
В соответствии с вашим последним комментарием я бы тогда предложил вам просто выполнить итерацию списка в обратном порядке ( взгляните на эту часть документации ). Подводя итог, вы должны:
{% for message in obj.messages.all reversed %}
<!-- Do whatever you want to render your messages --!>
{% endfor %}
Для удержания прокрутки вниз вам понадобится трюк с JS или CSS. Я думаю, вы можете найти этот вопрос полезным.