Как вернуть последнюю страницу при использовании нумерации страниц в django?

На простом форуме я использую нативную django Pagination. как пользователи, которые будут направлены на последнюю страницу в потоке после того, как они написали там.

вот вид

@login_required
def topic_reply(request, topic_id):
    tform = PostForm()
    topic = Topic.objects.get(pk=topic_id)
    args = {}
    posts = Post.objects.filter(topic= topic)
    posts =  Paginator(posts,10)


    if request.method == 'POST':
        post = PostForm(request.POST)


        if post.is_valid():
            p = post.save(commit = False)
            p.topic = topic
            p.title = post.cleaned_data['title']
            p.body = post.cleaned_data['body']
            p.creator = request.user

            p.save()

            return HttpResponseRedirect('/forum/topic/%s/?page=%s'  % (topic.slug, posts.page_range[-1]))

    else:
        args.update(csrf(request))
        args['form'] = tform
        args['topic'] = topic
        return render_to_response('myforum/reply.html', args, 
                                  context_instance=RequestContext(request)) 

Который дает:

'Page' object has no attribute 'page_range'

Я пробовал другие трюки, такие как:

posts = list(Post.objects.filter(topic= topic))

но ни один не работал. Так что оставайтесь в неведении и цените ваши намеки.


person Jand    schedule 15.09.2015    source источник


Ответы (1)


Попробуйте использовать num_pages. Номер последней страницы должен быть равен количеству страниц.

return HttpResponseRedirect('/forum/topic/%s/?page=%s'  % (topic.slug, posts.num_pages))
person Rod Xavier    schedule 15.09.2015