在django制作评论树的最佳方法是什么

时间:2017-09-28 10:25:46

标签: python django templates django-templates

我已经制作了一个评论模型与prarent字段存储评论作为其他人的孩子。

我的问题是如何在模板中显示它

2 个答案:

答案 0 :(得分:0)

您可以使用相关名称字段来获取子评论。在模板上,您将有两个for循环。第一个for循环遍历每个父注释,第二个循环遍历该父元素的chillds。例如:for comment in comments : For child_comment in comment.related_name.all(): Print child_comment

What is `related_name` used for in Django?

答案 1 :(得分:0)

抱歉,我已经在移动设备上写过此内容,但我希望您能解决这个问题 BTW 这来自我自己的应用

让我们说你想制作类似Instagram的东西,每个嵌套的评论都有一个回复按钮,它们都会出现在最近评论之下。

这是一种奇怪的方法,但您也可以将每个嵌套按钮的回复按钮提交给年龄最大的评论。这种方法是每个回复按钮引用其真实父级

这只是为了您的理解

make a model
Comments
Parent : MantToMany(self refername = child null=true)
User:  ForeignKey(user)
Text: TextField
Likes: ForeignKey(comments_likes)
Post: ForeignKey(Posts)

我已经制作了一个功能,可以获取最早的评论并将其保存在最早的评论中

Def  Eldermost_comment(comment):
    If comment.parent is none:
        pass
    Else:
        comment_ = Eldermost_comment(comment.parent)
        comment.parent = comment_

在presave信号中调用它,这将为每个嵌套注释提供相同的父

Queryset = comments.objects.all.filter(post=123456)

它很容易

只需使用引用名称即可获取所有子注释。

for comment in Queryset:
    if comment.child is none:
        #just display comment

    else:
        #display comment and then
        #display comment.child.all()