开发者社区> 问答> 正文

如何在一个视图中从两个模型中获得两个对象

我正在写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()

展开
收起
一码平川MACHEL 2019-01-23 14:49:28 1749 0
1 条回答
写回答
取消 提交回答
  • 根据问题,我认为一种方法是使用这样的基于函数的视图(我没有尝试过,但我希望这或者非常类似于为你工作):

    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通过视图功能,显示相关数据)。

    2019-07-17 23:26:38
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
继承与功能组合 立即下载
对象的生命期管理 立即下载
低代码开发师(初级)实战教程 立即下载

相关实验场景

更多