我正在写django博客应用程序,如何在Post视图中获取Comment对象。使用post对象没有问题,因为我写完self.get_object()了。问题是如何获得Comment对象。以下是我的代码。
class PostDetail(generic.DetailView, FormMixin):
template_name = 'post_detail.html'
context_object_name = 'post'
model = Post
form_class = CommentForm
这是帖子模型:
class Post(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=200)
text = RichTextUploadingField()
这是评论模型
class Comment(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE)
post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='comments')
text = RichTextUploadingField()
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据问题,我认为一种方法是使用这样的基于函数的视图(我没有尝试过,但我希望这或者非常类似于为你工作):
from django.shortcuts import render
def myview(request):
post_objs = Post.objects.all()
comment_objs = Comment.objects.all()
mydict = {'posts':post_obj, 'comments':comment_obj}
return render(request, 'myapp/myhtml.html', context=mydict)
考虑到你所拥有的一对多关系,你也可以进一步传递你想要的确切数据
def myview(request, pk):
the_post_obj = Post.objects.get(pk=pk)
comment_objs = Comment.objects.filter(post=the_post_obj)
mydict = {'the_post':the_post_obj,'comments':comment_objs}
return render(request, 'myapp/myhtml.html', context=mydict)
无论您编写什么视图,现在都可以转到HTML文件并以您想要的任何方式显示查询的数据。例如,您可以显示单个帖子的所有评论。不要忘记,对于使用我上面写的第二个视图,你必须将帖子PK发送到视图(例如,你可以把它放在HTML文件的链接中,这样当用户点击帖子时(这是超链接),后PK通过视图功能,显示相关数据)。