2016-05-10 10 views
-1

Ich habe eine Datentabelle in meiner Django App mit django_tables2 und haben hinzugefügt bootstrap pagination zu ihm aus offensichtlichen Gründen mit this answer. Ich kopierte die tables.html-Datei in meine Vorlagen Verzeichnis und es wie folgt geändert:Django Paginierung Grenzen

{% if table.page %} 
     {% with table.page.paginator.count as total %} 
      {% with table.page.object_list|length as count %} 
       {% block pagination %} 
        <ul class="pagination"> 
          {% block pagination.cardinality %} 
          <li class="cardinality"> 
           {% if total != count %}{% blocktrans %}Showing {{ count }} of {{ total }} 
           {% endblocktrans %}{% else %}{{ total }}{% endif %} 
           {% if total == 1 %}{{ table.data.verbose_name }}{% else %} 
            {{ table.data.verbose_name_plural }}{% endif %} 
          </li> 
         {% endblock pagination.cardinality %} 
        </ul> 
        <div class="pull-right"> 
         <nav> 
          <ul class="pagination"> 
           {% block pagination.allpages %} 
            {% if table.page.has_previous %} 
             <li><a href="{% querystring table.prefixed_page_field=table.page.previous_page_number %}">Previous</a></li> 
            {% endif %} 

            {% for p in table.paginator.page_range %} 
             <li><a href="{% querystring table.prefixed_page_field=p %}">{{ p }}</a></li> 
            {% endfor %} 

            {% if table.has_next %} 
             <li><a href="{% querystring table.prefixed_page_field=table.page.next_page_number %}">Next</a></li> 
            {% endif %} 
           {% endblock pagination.allpages %} 
          </ul> 
         </nav> 
        </div> 
       </div> 
      {% endblock pagination %} 
     {% endwith %} 
    {% endwith %} 
{% endif %} 

Ab sofort ist der Tisch hat sehr wenig Daten so habe ich nur zwei Seiten. Allerdings füllte ich die Tabelle mit zufälligen Daten und konnte 10 Seiten auf den Tisch bekommen. enter image description here Allerdings ist dies nicht wünschenswert, denn was passiert, wenn ich 1000 Einträge mit 10 pro Seite habe, kann ich nicht den Seiten-Navigator 100 anzeigen lassen, da dies meinen Inhaltsbereich überfluten würde. Wie kann ich irgendwie die Anzahl der angezeigten Seiten begrenzen, d. H. Anstelle von 1 - 10 erscheinen im obigen Bild etwas wie 1|2|3|4|5|.., wo ein Klick auf die ... die Seiten 6|7|8|9|10|.. anzeigen würde. Ich habe versucht, previous und next Schaltflächen hinzufügen, aber nicht sicher, warum sie ausfallen.

Antwort

0

Der einfachste Weg ist die Verwendung eines Paginierungstags aus einer fremden Packung. Sie können eine umfangreiche Liste von ihnen auf django-packages finden.

Zum Beispiel mit django-bootstrap-pagination Ihre Paginierung Block so etwas wie

{% bootstrap_pager table.page %} 
aussehen sollte