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.

Était-ce utile?

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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top