2012-02-21 3 views
8

Sto usando django-pagination a impaginare il mio elenco degli oggetti. Funziona perfettamente. Voglio dare un numero a ciascun oggetto sulla pagina e sto usando {{forloop.counter}} per quello, ma il problema è che inizia il conteggio degli oggetti da 1 su ogni pagina. Volevo visualizzare il numero di oggetti reali.Come mostrano i numeri oggetto corretto quando si utilizza django-pagination

Dire se sto impaginando 10 oggetti per pagina, quindi voglio oggetto numero 11 per il primo oggetto a pagina 2. Ho provato a scrivere un filtro modello per questo, ma in qualche modo non sono in grado di inviare sia request.get.page e {{forloop.counter}} alla funzione di filtro. Non sono in grado di farlo in quel modo.

Qualsiasi aiuto per la direzione sarà apprezzato.

risposta

14

È possibile utilizzare il tag add modello per aggiungere il conteggio corrente dal Paginator alla forloop

{{ forloop.counter|add:paginator.page.start_index }} 
+0

sto ottenendo il seguente errore 'Preso VariableDoesNotExist durante il rendering: ricerca non riuscita per la chiave [START_INDEX] in u''' – Sachin

+0

Come è il Paginator passato dalla vista al modello? –

+0

Sto usando django-impaginazione app che fa l'impaginazione del modello stesso, non sto usando paginator – Sachin

1

add indice iniziale paginator con per il contatore del ciclo a partire da zero

nel modello

{% for object in page_objects %} 
    ... 
    {{ forloop.counter0|add:page_objects.start_index }} 
    ... 
    ... 
{% endfor %} 

in vista

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) 
2

Ho usato questo nel mio modello e il suo lavoro correttamente

{{ page_obj.start_index|add:forloop.counter0 }}