Wie paginiere ich Django mit anderen Variablen?

Ich habe Probleme mit der Paginierung in Django. Nehmen Sie die URL unten als Beispiel:

http://127.0.0.1:8000/users/?sort=first_name

Auf dieser Seite habe ich sozusagen eine Liste der Benutzer, die durch Ihren Vorname ein. Ohne eine Art GET-variable wird standardmäßig Sortieren nach id.

Nun, wenn ich auf den nächsten link, den ich erwarten, dass die folgende URL:

http://127.0.0.1:8000/users/?sort=first_name&page=2

Stattdessen verliere ich alle get-Variablen und am Ende mit

http://127.0.0.1:8000/users/?page=2

Dies ist ein problem, weil die zweite Seite ist sortiert nach id statt Vorname.

Wenn ich Anfrage.get_full_path ich schließlich am Ende mit einem hässlichen URL:

http://127.0.0.1:8000/users/?sort=first_name&page=2&page=3&page=4

Was ist die Lösung? Gibt es eine Möglichkeit, den Zugriff auf die GET-Variablen auf der Vorlage und ersetzen Sie den Wert für die Seite?

Ich bin mit Seitenzahlen, wie beschrieben in Django-Dokumentation und meine Präferenz ist es, weiter zu verwenden. Die code Vorlage die ich verwende, ist ähnlich wie diese:

{% if contacts.has_next %}
    <a href="?page={{ contacts.next_page_number }}">next</a>
{% endif %}

InformationsquelleAutor der Frage vagabond | 2010-01-12

Schreibe einen Kommentar