Это не похоже на сортировку; это похоже на проблему фильтрации.
Если это так, вам нужно решить, предназначены ли ваши фильтрующие ключи для закладок, или они динамические, и вы должны начать с какой-то базы. Решает, будете ли вы использовать URL-адреса в качестве ключей сортировки или аргументы CGI.
В любом случае, обработчик похож. Во-первых, вы должны создать в своем urls.py:
url('/projects/(?P<status>\d+)/', quote_projects),
И ваши проекты могут выглядеть так:
@login_required
def quote_projects(request, status):
status = dict(STATUS_CHOICES).get(status, None)
if not status:
raise Http404
return render_to_response(
'project/index.html',
{'projects': Projects.objects.filter(status__value__exact = status)},
context_instance=RequestContext(request))
Вам не нужен «пользователь» вообще; он автоматически предоставляется RequestContext и подтверждается тем фактом, что вы указали этот метод login_required. Теперь вы можете сослаться на "http://example.com/projects/quoted"
Для аргументов CGI ваша строка urls.py выглядит следующим образом:
url('/projects/', quote_projects),
И ваша функция выглядит так:
@login_required
def quote_projects(request):
status = request.GET.get('status', None)
status = dict(STATUS_CHOICES).get(status, None)
if not status:
raise Http404
return render_to_response(
'project/index.html',
{'projects': Projects.objects.filter(status__value__exact = status)},
context_instance=RequestContext(request))
А теперь ваш URL будет: http://example.com/project/?status=quoted