Sie müssen etwas Komplexer hinter den Kulissen tun. Und bitte beachte, dass ich, während ich ein Python-Entwickler bin, schon lange mit Werkzeug und Jinja2 gearbeitet habe und meine Django-Syntax ein wenig eingerostet ist. Auch dies wurde trocken-codiert (wie ich es hier im Browser eingegeben) und sollte getestet werden, um sicherzustellen, dass es wie vorgesehen funktioniert.
Im Allgemeinen werde ich ein Paginierungsobjekt erstellen und es in einem Abfrageobjekt übergeben, das nicht nach Seiten gefiltert wird. Sie können auch angeben, wie viele Seiten und Seiten Sie verwenden.
So etwas vage ähnlich wie:
Paginator(query, objects_per_page, current_page_number)
Und dann passieren die resultierende Paginatorobjekt in die Vorlage.
im Inneren des init paginator Sie etwas Ähnliches tun wollen würde:
def __init__(self, query, objects_per_page, current_page_number):
self.total = query.count()
self.per_page = objects_per_page
self.current_page_number = current_page_number
self.lower_limit = objects_per_page * current_page_number
self.upper_limit = objects_per_page * (current_page_number + 1)
if self.upper_limit > self.total:
self.upper_limit = self.total
self.objects = query[self.lower_limit - 1:self.upper_limit - 1]
Dann in der Vorlage, die Sie so etwas wie
Showing {{paginator.lower_limit}}-{{paginator.upper_limit}} of {{paginator.total}}
Und später tun würde, wenn Sie bereit sind, Um über die Objekte zu iterieren, können Sie einfach über paginator.objects iterieren.
Ich hoffe, das gibt Ihnen eine allgemeine Vorstellung davon, wie Sie das sauber machen können.
whoa! das ist genau das was ich gesucht habe. Vielen Dank! – webgonewild
Das war sehr hilfreich - danke. Nur zu beachten wäre, dass das Objekt in einer 'ListView' standardmäßig 'page_obj' genannt wird und nicht' page'. – BigglesZX