2012-04-14 7 views
1

これは、タスクをリストし、descとascの3つの条件でソートするコードです。
私は今、2つの問題があります:
1)order_byは最初のページにのみ適用されます。 order_byが実行され、順序付きリスト全体が改ページされるようにしたいと思います。
2) "_pressed"矢印イメージは決して表示されません。

助けてください!ありがとう! 2番目の質問についてページング前のDJANGO order_by

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

<div class="sortList"> 
<ul> 
<li class="sort">Sort by latest 
<a href="?sort=latest-desc">{% if request.GET.sort == 'latest-desc' %}<img src="/static/img/downarrow_pressed.gif"/>{% endif %} 
{% if request.GET.sort != 'latest-desc' %}<img src="/static/img/downarrow.gif"/>{% endif %}</a> 
<a href="?sort=latest-asc">{% if request.GET.sort == 'latest-asc' %}<img src="/static/img/uparrow_pressed.gif"/>{% endif %} 
{% if request.GET.sort != 'latest-asc' %}<img src="/static/img/uparrow.gif"/>{% endif %}</a></li> 
<li class="sort">Sort by deadline 
<a href="?sort=deadline-desc">{% if request.GET.sort == 'deadline-desc' %}<img src="/static/img/downarrow_pressed.gif" />{% endif %} 
{% if request.GET.sort != 'deadline-desc' %}<img src="/static/img/downarrow.gif" />{% endif %}</a> 
<a href="?sort=deadline-asc">{% if request.GET.sort == 'deadline-asc' %}<img src="/static/img/uparrow_pressed.gif" />{% endif %} 
{% if request.GET.sort != 'deadline-asc' %}<img src="/static/img/uparrow.gif" />{% endif %}</a></li> 
<li class="sort">Sort by price 
<a href="?sort=price-desc">{% if request.GET.sort == 'price-desc' %}<img src="/static/img/downarrow_pressed.gif" />{% endif %} 
{% if request.GET.sort != 'price-desc' %}<img src="/static/img/downarrow.gif" />{% endif %}</a> 
<a> <a href="?sort=price-asc">{% if request.GET.sort == 'price-asc' %}<img src="/static/img/uparrow_pressed.gif" /> {% endif %} 
{% if request.GET.sort != 'price-asc' %}<img src="/static/img/uparrow.gif" />{% endif %}</a></li> 
</ul> 
</div> 

答えて

0

。 TEMPLATE_CONTEXT_PROCESSORS内のdjango.core.context_processors.requestの場合は、

{{request.GET}}が何かを返すかどうかを確認します。

についてたぶん、問題はここに:

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

このお試しください:

kwargs['queryset'] = q 

をそして、あなたはあなたのビュー

+0

これが問題でした! context_processorsが機能しました。最初の質問は未だ解決されていません。 – magu2

0
  1. あなたのテンプレートファイルfindtask.htmlを確認の初めと終わりでのqに何をトレースする必要があり、特にページのためのURLリンクを生成する部分。私はリンクがsort引数を間違って欠落しているとは思わない。
  2. 設定ファイルのTEMPLATE_CONTEXT_PROCESSORSを確認すると、the request processorになりますか?テンプレートに存在しない変数にアクセスしても、Djangoでエラーが発生することはありません。
+0

ありがとう!それはcontext_processorsでした。 – magu2

関連する問題