我正在构建一个博客应用程序,我正试图实现一个功能-
其中用户可以在一个页面中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 = Blog.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)
urls . py
path('rate_blog_post/<int:blog_id>/', views.rate_blog_post, name='rate_blog_post'),
- 表单工作正常,它正在保存评级
到目前为止我尝试了什么?:
- 我试过使用
next_blog
,如:-
return redirect('rate_blog_post', rate_blog_post=blog_id)
但是它显示
带关键字参数'{'pk': 2}'的rate_blog_post的反向查找
注意:-
next_blog
包含多个博客,但我没有找到任何其他方式使用像get_object_or_404(Blog,pk=blog_id, rate__ratings =None)
,所以它将重定向到下一个博客帖子id有评级= None
- Than i try
get_object_or_404(Blog,pk=blog_id, rate__ratings =None)
没有找到关键字参数'{'pk': 3}'的'rate_blog_post'的反向。1模式(s)尝试:[' rate_blog_post/(?术;blog_id>[0 - 9] +)/美元)
我试过很多次,但都不奏效。
我真的很感激你的帮助。谢谢你所以,我选择了一些评论。用户将重定向到下一篇文章,选择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="")
这应该能解决问题