Django как изменить сортировку записей?
Всем привет.
Как по нажатию на кнопку(или ссылку) изменить сортировку записей?
Во views.py есть два queryset'а:
posts = Post.objects.filter(cat__slug=cat_slug)
popular_posts = Post.objects.filter(cat__slug=cat_slug).order_by('-views_count')
Первый выбирает из базы данных записи с определенной категорией, а второй выбирает записи с определенной категорий и сортирует их по количеству просмотров.
В шаблоне для вывода записей используется первый queryset:
{% for forum_posts in posts %}
<a class="title_link" href="{{ forum_posts.get_absolute_url }}">{{ forum_posts.post_title }}</a>
{% endfor %}
Хотелось бы чтоб по нажатию на кнопку или ссылку страница перезагружалась и использовался для вывода записей уже второй queryset.
Важное условие, это не создавать отдельные url адреса, нужно чтоб все происходило на одной странице.
Много гуглил и искал ответ, к сожалению не удалось. Буду рад любой помощи :)
При необходимости могу предоставить код.
Ответы (2 шт):
Это можно сделать через сессии https://developer.mozilla.org/ru/docs/Learn/Server-side/Django/Sessions
В общем, решение было найдено:
В своем шаблоне создается форма с кнопкой, в кнопке обязательно указывается атрибут name:
<form method="get">{% csrf_token %}
<button name="def">Обычное</button>
</form>
Затем, во views мы отслеживаем нажатие этой кнопки по её имени в запросе:
if 'def' in request.GET:
# Тут ваш код