Comment afficher les numéros d'objets corrects lors de l'utilisation de django-pagination
-
28-10-2019 - |
Question
J'utilise django-pagination pour paginer ma liste d'objets.Cela fonctionne parfaitement.Je veux donner un numéro à chaque objet sur la page et j'utilise {{forloop.counter}}
pour cela, mais le problème est qu'il commence le décompte d'objets à partir de 1 sur chaque page.Je voulais afficher le nombre réel d'objets.
Dites si je pagine 10 objets par page, alors je veux que le numéro d'objet soit 11 pour le premier objet de la page 2. J'ai essayé d'écrire un filtre de modèle pour cela, mais je ne suis pas en mesure d'envoyer à la fois request.get.page
et {{forloop.counter}}
à ma fonction de filtre.Je ne peux pas le faire de cette façon.
Toute aide pour la direction sera appréciée.
La solution
Vous pouvez utiliser la balise de modèle add
pour ajouter le décompte actuel à partir dupaginateur à la boucle for
{{ forloop.counter|add:paginator.page.start_index }}
Autres conseils
J'ai utilisé ceci dans mon modèle et cela fonctionne correctement
{{ page_obj.start_index|add:forloop.counter0 }}
Ou vous pouvez utiliser
{% for obj in obj_list %}
{{ forlopp.counter0|add:obj_list.start_index }}
{% endfor %}
ajouter l'index de départ du paginateur avec un compteur de boucle for à partir de zéro
dans le modèle
{% for object in page_objects %}
...
{{ forloop.counter0|add:page_objects.start_index }}
...
...
{% endfor %}
en vue
objects = Abcdef.objects.all() # Abcdef is the modal
paginator = Paginator(objects, 10)
page_number = request.GET.get('page')
try:
page_objects = paginator.page(page_number)
except PageNotAnInteger:
page_objects = paginator.page(1)
except EmptyPage:
page_objects = paginator.page(paginator.num_pages)
data = {
"page_objects" : page_objects,
}
return render(request, "template/template.html", data)