Django. Сортировка по кнопке на странице выдачи результата поиска
Как в Django сделать кнопки сортировка по дате и по релевантности на странице выдачи поиска. Есть модель Article, в которой есть поле "publish" - Дата публикации. В классе Meta стоит сортировка по публикации "-publish", т.е. показывать самые свежие упубликованные статьи. Но на странице выдачи поиска я хотел бы сделать кнопку сортировки по датам. На Stackoverflow пользователи советуют передать параметры сортировки методом "GET" в url, что типо такого:
<form action="{% url 'main:article_search'%}" class = "#" method="GET">
<select class= "#" name="select">
<option disabled selected> Способ сортировки</option>
<option value="v1">Дата публикации: по возрастанию</option>
<option value="v2">Дата публикации: по убыванию</option>
</select>
<button class="#">Применить</button>
</form>
Мое представление поиска (views.py):
def article_search(request):
form = SearchForm()
query = None
results = []
if 'query' in request.GET:
form = SearchForm(request.GET)
if form.is_valid():
query = form.cleaned_data['query']
search_vector = SearchVector('title', 'body')
search_query = SearchQuery(query)
search_headline = SearchHeadline('body', search_query,
max_fragments=2,
start_sel='<span class="headline">',
stop_sel='</span>')
if request.user.is_superuser:
results = Article.published.all().annotate(
search=search_vector,
rank=SearchRank(search_vector, search_query)
).annotate(headline=search_headline).filter(search=search_query).order_by('-rank')
else:
results = Article.published.all().annotate(
search=search_vector,
rank=SearchRank(search_vector, search_query)
).annotate(headline=search_headline).filter(search=search_query).order_by('-rank').filter(private=False)
sorting_method = request.GET.get('select')
if sorting_method == 'v1':
results = Article.published.order_by('publish')
elif sorting_method == 'v2':
results = Article.published.order_by('-publish')
return render(request,
'main/search.html',
{'form': form,
'query': query,
'results': results})
Но данный способ не работает. Как правильно организовать сортировку в Django по кнопке?