2016-08-20 2 views
0

매김과 함께 주문 :장고 나는 일반의 ListView에 주문 및 페이지 매김을 구현 한

class CarList(LoginRequiredMixin, ListView): 
    model = Car 
    paginate_by = 30 

    ordering = 'car_id_internal' 

    def get_ordering(self): 
     return self.request.GET.get('ordering', 'car_id_internal') 

그리고 내 템플릿 :

<thead> 
     <tr> 
      <th><a href="{% url 'car_list' %}?ordering=car_id_internal">Internal car ID</a></th> 
      <th><a href="{% url 'car_list' %}?ordering=type">Type</a></th> 
      <th><a href="{% url 'car_list' %}?ordering=brand">Brand</a></th> 
     </tr> 
    </thead> 

및 템플릿의 페이지 매김 :

{# .... **Now the pagination section** .... #} 
{% if is_paginated %} 
    <div class="pagination" style="width:100%"> 
     <span class="page-links"> 
      <div class="col-sm-2"> 
      {% if page_obj.has_previous %} 
       <a href="/feriehus?page={{ page_obj.previous_page_number }}">Forrige side</a> 
      {% endif %} 
      </div> 
      <div class="col-sm-2"> 
      <span class="page-current"> 
       Side {{ page_obj.number|unlocalize }} af {{ page_obj.paginator.num_pages|unlocalize }} 
      </span> 
      </div> 
      <div class="col-sm-2"> 
      {% if page_obj.has_next %} 
       <a href="/feriehus?page={{ page_obj.next_page_number }}">Næste side</a> 
      </div> 
      {% endif %} 
     </span> 
    </div> 
{% endif %} 

이것은 잘 작동하지만, 다음 페이지를 클릭하면 car_id_internal에 의한 순서가 바뀝니다. 다음 페이지로 갈 때 유형과 같은 첫 번째 페이지에서 선택된 주문을 유지하고 싶습니다. 이것이 장고와 가능한가? 장고 1.9를 사용하고 있습니다.

누군가 도와 드릴 수 있기를 바랍니다.

답변

2

당신은 이전/다음 페이지 링크에서 그것을 템플릿에 현재 주문 값을 전달하고 사용해야합니다

class CarList(LoginRequiredMixin, ListView): 
    def get_context_data(self, *args, **kwargs): 
     context = super(CarList, self).get_context_data(*args, **kwargs) 
     context['current_order'] = self.get_ordering() 
     return context 

...

<a href="/feriehus?ordering={{ current_order }}&page={{ page_obj.previous_page_number }}"> 

등등.

+0

굉장합니다. 정말 고맙습니다! – Wessi

관련 문제