在Django中通过request.GET排序

AAA*_*AAA 1 django django-views

我希望人们能够对事物进行排序,而不仅仅是我手动排序.因此,例如,我将有一个排序链接,链接将是类似的,/?sort=issues这将显示按字母顺序排列的问题列表等.或者/?sort=cover它将显示仅有封面的问题列表.

Views.py

def issues(request):
    issues_list = Issue.objects.order_by('-date_added')
    paginator = Paginator(issues_list, 24)
    try:
        page = int(request.GET.get('page', '1'))
    except ValueError:
        page = 1
    try:
        issues = paginator.page(page)
    except (EmptyPage, InvalidPage):
        issues = paginator.page(paginator.num_pages)
    return render_to_response('comics/issues.html', {'issues': issues}, context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

所以,我想任何人通过类似有排序的选项-date_added,date_addded,pub_date,importance,等.

我想我必须修改我的观点并做一些请求.获得魔法,但我对Django很新,并且真的不知道如何去做.我也检查了Django文档.

DrT*_*rsa 5

sort_by = request.GET.get('sort', '-date_added')
if sort_by not in ['-date_added', 'date_addded', 'pub_date', 'importance']:
     sort_by = '-date_added'
issues_list = Issue.objects.order_by(sort_by)
Run Code Online (Sandbox Code Playgroud)