2010-07-29 4 views
0

Sur l'une de mes pages, je souhaite afficher un sous-ensemble d'une liste triée d'objets. La liste entière des objets pertinents est extrêmement longue et a de bonnes chances de changer pendant que l'utilisateur regarde la page. Cela ne me dérange pas que la page ne soit pas à jour, mais je dois m'assurer que lorsque l'utilisateur ira à la page suivante, l'utilisateur verra les n objets suivants de la liste triée d'origine. Ainsi, en raison de données potentiellement modifiées, l'utilisation de la pagination intégrée de django ou d'une bibliothèque vraiment sympa telle que Django-endless-pagination ne renverra pas les résultats corrects lorsque vous passerez à la "page suivante". Pour donner un exemple de ce que je veux dire, disons que nous avons des objets [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] et que nous voulons afficher 5 par page, trié de petit à grand. La première page ressemblerait à ceci:Django Pagination sur un jeu de Query modifié

1, 2, 3, 4, 5.

Mais tout en regardant cette page, 3 et 4 ont été supprimés. Si nous allons à la page, la pagination sera ré-interroger l'ensemble et le retour « suivant »:

8, 9, 10, 11, 12

Je sais que c'est le comportement attendu de la pagination, mais je voudrais une moyen facile de faire le prochain affichage de la page:

6, 7, 8, 9, 10

la solution la plus évidente consiste à faire un peu de pagination côté client, et je me rends compte il y a un nice jquery library pour cela, mais le le nombre d'objets peut être potentiellement trop important pour que cette solution soit réaliste.

Y at-il une approche simple paginer sur une queryset et continuer à utiliser les résultats retournés de cette queryset d'origine au lieu de re-chercher de l'queryset qui a peut-être changé?

Merci pour toute idée que vous pouvez me donner!

Répondre

3

Ce qui pourrait être une solution est peut-être si vous créez votre propre fonction de pagination qu'au lieu du lien suivant se référant à une certaine page, il pourrait passer un dossier qui est le dossier en haut de la page suivante

Le problème est que cela ne fonctionnerait que si les éléments ajoutés/modifiés ne sont que les premiers éléments d'une liste

+0

+ 1 pour une suggestion intéressante et en soulignant son écueil. De même, je pourrais éventuellement stocker la valeur de l'enregistrement supérieur sur la page suivante et récupérer tous les résultats qui suivent. – Spike

+0

Je vais marquer cela comme accepté parce que vous êtes le seul à m'aider à ce sujet et votre suggestion est plutôt bonne. Donc merci! – Spike

+0

Oui, c'est plus ou moins ce que je voulais dire être heureux d'aider, et merci pour le vote (signifie que je peux réellement commenter et voter maintenant :)) – Hugoagogo