分页前的DJANGO order_by

分页前的DJANGO order_by,django,sorting,get,pagination,Django,Sorting,Get,Pagination,这是列出任务并按desc和asc三个条件对其排序的代码 我现在有两个问题: 1) order_by仅应用于第一页。我希望运行order_by,然后对整个已排序列表进行分页。 2) 永远不会显示“\u按下”箭头图像。 请帮忙!谢谢 VIEW.PY def task_list(request, **kwargs): q = Task.objects.all() if 'sort' in request.GET: sort_by = request.GET['sort'

这是列出任务并按desc和asc三个条件对其排序的代码
我现在有两个问题:
1) order_by仅应用于第一页。我希望运行order_by,然后对整个已排序列表进行分页。
2) 永远不会显示“\u按下”箭头图像。

请帮忙!谢谢

VIEW.PY

def task_list(request, **kwargs):
    q = Task.objects.all()
    if 'sort' in request.GET:
        sort_by = request.GET['sort']
    else:
        sort_by = 'latest-desc'

    if sort_by == 'latest-desc':
        q = q.order_by('-pub_date')

    if sort_by == 'latest-asc':
        q = q.order_by('pub_date')

    if sort_by == 'price-desc':
        q = q.order_by('-price')

    if sort_by == 'price-asc':
        q = q.order_by('price')

    if sort_by == 'deadline-desc':
        q = q.order_by('-expiry_date')

    if sort_by == 'deadline-asc':
        q = q.order_by('expiry_date')

    kwargs['queryset'] = q.all()

    return list_detail.object_list(request, **kwargs)
URL.PY

urlpatterns = patterns('',
    url(r'^tasks/$', 'tasks.views.task_list', 
         {'template_name':'findtask.html', 'paginate_by':4}, name='tasks'),
)
HTML


  • 按最新版本排序
  • 按截止日期排序
  • 按价格排序
关于第二个问题。如果在模板\u上下文\u处理器中

检查{request.GET}}是否返回某些内容

大约第一个。这里可能有问题:

kwargs['queryset'] = q.all()
试试这个:

kwargs['queryset'] = q
您需要在视图的开头和结尾跟踪q中的内容

  • 检查模板文件
    findtask.html
    ,尤其是生成页面URL链接的部分。我怀疑链接错误地缺少
    sort
    参数
  • 签入设置文件,有吗?现在访问模板中不存在的变量不会在Django中引发错误

  • 是的,这就是问题所在!上下文处理器工作正常。第一个问题仍然没有解决。
    kwargs['queryset'] = q