Django как изменить сортировку записей?

Рейтинг: 0Ответов: 2Опубликовано: 21.03.2023

Всем привет.

Как по нажатию на кнопку(или ссылку) изменить сортировку записей?

Во 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 адреса, нужно чтоб все происходило на одной странице.

Много гуглил и искал ответ, к сожалению не удалось. Буду рад любой помощи :)

При необходимости могу предоставить код.

Ответы

▲ 0Принят

В общем, решение было найдено:

В своем шаблоне создается форма с кнопкой, в кнопке обязательно указывается атрибут name:

<form method="get">{% csrf_token %}
    <button name="def">Обычное</button>
</form>

Затем, во views мы отслеживаем нажатие этой кнопки по её имени в запросе:

if 'def' in request.GET:
    # Тут ваш код
▲ 0

Это можно сделать через сессии https://developer.mozilla.org/ru/docs/Learn/Server-side/Django/Sessions