2017-11-28 18 views
0

ページネーションとフィルタリングを使用する際に問題があります。 CBV(ListView)でdjango-filterフィルタリングとページネイターを使用しています。 すべて動作しています。 paginatorはフィルタリング後にボックスをラップしますが、問題はテンプレートのpaginatorのボタンにあります。 NEXTまたはPREVを押すと フィルターがリセットされます。私は解決策が見つかりました:Djangoページネーション+フィルタ

<span><a href="?page={{ page_obj.previous_page_number }} 
    {% for key,value in request.GET.items %} 
      {% ifnotequal key 'page' %}&{{ key }}={{ value }}{% endifnotequal %} 
    {% endfor %}">Previous</a> 
</span> 

をしかし、これは完全に問題を解決していませんので、私は私のフィルターからのリクエストを送信することができます。

?item_title=&description=&ordering=&popular=&min_price=&max_price=&category_brands=11&category_brands=13 

そして、私は2 category_brands URLに=と、このソリューションを持っているので、私は2つの同一のキーを持つことができないので動作しません。私を助けてください。テンプレートで // tamplate_tag

@register.simple_tag(takes_context=True) 
def url_replace(context, **kwargs): 
query = context['request'].GET.copy() 

for kwarg in kwargs: 
    try: 
     query.pop(kwarg) 
    except KeyError: 
     pass 

query.update(kwargs) 

return mark_safe(query.urlencode()) 

{% load <your_templatetag_name> %} 
... 
<a href="?{% url_replace page=page_obj.previous_page_number %}">Previous</a> 
... 
<a href="?{% url_replace page=page_obj.next_page_number %}">Next</a> 

それは私の作品

+0

問題はあなたのparamsの編成にあると思います。 '?item_title =&description =&ordering =&popular_&min_price =&max_price =&category_brands = 11&category_brands = 13'です。これに関連するビットを検索します。 '=&'は奇妙に思えます... – Dalton

+0

こんにちは& - それはクエリフィールドから値を貼り付けるようなものです。 フィルタの値が==> min_price = 1&category_brands = 13であり、min_price =&category_brandsでない場合は –

+0

私がここに当てはまらない場合は、別の解決方法、フィルタとページ番号を組み合わせる方法、互いに重ならないでください –

答えて

0

は解決策を見つけました。

関連する問題