Как сделать так, чтобы при нажатии на кнопку изменялся параметр django order_by?
Здесь представлена моя функция views.py.
def publications(request):
if request.method == 'POST':
publications = UserPublications.objects.all().order_by('status_date')
else:
publications = UserPublications.objects.all().order_by('contributors')
context = {'publications': publications}
return render(request, 'users/publications.html', context)
Вот мои публикации.html:
<button type="submit" method="POST">Filter By Date</button>
<ol class="text">
{% for publication in publications %}
<div>{{publication.text}}</div>
{% endfor %}
</ol>
Я хочу, чтобы на кнопку можно было нажать, и если кто-то нажимает на нее, она меняет фильтр на фильтр по дате, а не по вкладчикам (оба атрибута моей модели). Как мне это сделать? Сейчас у меня нет ошибок, но при нажатии на кнопку сортировка объектов не обновляется. Заранее спасибо.
Кнопка должна быть связана с <form>
, поэтому:
<form method="POST" action="{% url 'view-name-for-publications' %}">
<button type="submit">Filter By Date</button>
</form>
Однако не имеет особого смысла использовать метод запроса HTTP для определения того, сортировать по дате или нет. Обычно вы делаете GET запрос с строкой запроса [wiki], чтобы указать, по какому полю будет производиться сортировка.