Перенаправление на следующий пост после отправки формы

Я создаю приложение для блога и пытаюсь реализовать функцию -

В котором пользователь может rate блогов на одной странице и после нажатия Save Rate пользователь будет перенаправлен на страницу следующего блога обзора и пользователь будет оценивать следующий блог. Но он не перенаправляет на страницу следующего блога с рейтингом.

models.py

class Blog(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=500)

Rating_Choice = [('1','1'), ('2','2')]

class Rate(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
    ratings = models.CharField(max_length=1, choices=Rating_Choice)

views.py

def rate_blog_post(request, blog_id):
    obj = get_object_or_404(Blog, pk=blog_id)

    next_blog = Question.objects.filter(rate__ratings=None)
    
    if request.method == 'POST':
        form = Form(data=request.POST)
        if form.is_valid():
            post= form.save(commit=False)
            post.user = request.user
            post.blog = data
            post.save()

    # redirect here
            return redirect('rate_blog_post', pk=data.id)

    else:
        form = Form()

    context = {'obj':obj, 'form':form}
    return render(request, rate_blog_post.html', context)
  • Форма работает нормально, она сохраняет рейтинги

Что я уже пробовал? :

  • Я пробовал использовать next_blog, например :-
return redirect('rate_blog_post', rate_blog_post=blog_id)

Но он показал

Повтор для 'rate_blog_post' с ключевыми аргументами '{'pk': 2}' не найден

Я пробовал много раз, но у меня ничего не получилось.

Я буду очень признателен за вашу помощь. Спасибо

Итак, я сделал выбор отзывов. И пользователь будет перенаправлен на следующий пост, который имеет выбор None,

Проблема кроется здесь :

next_blog = Blog.objects.filter(rate__ratings=None)

return redirect('rate_blog_post', pk=data.id)

Первый : Запрашивает один блог, который вы хотите посетить следующим, а не несколько

next_blog = Blog.objects.filter(rate__ratings="").order_by('id')[0]

Второе : используйте pk=next_blog.id при перенаправлении

return redirect('rate_blog_post', blog_id=next_blog.id)
ratings = models.CharField(max_length=1, choices=Rating_Choice, default="")

Это должно решить проблему

Вернуться на верх