【问题标题】:What's the best to make a tree of comments in django在 django 中制作评论树的最佳方法是什么
【发布时间】:2023-04-09 05:33:01
【问题描述】:

我制作了一个带有 prrent 字段的 cmets 模型,以将评论存储为其他人的子项。

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

【问题讨论】:

    标签: python django templates django-templates


    【解决方案1】:

    对不起,我是在手机上写的,但我希望你能解决 顺便提一句 这是来自我自己的应用程序

    假设您想制作类似 Instagram 的内容,其中每个嵌套评论都有一个回复按钮,它们都会出现在 Elder_most 评论下方。

    这是一个奇怪的方法,但你也可以让每个嵌套按钮的回复按钮提交给最老的评论。这种方法是当每个回复按钮都指向其真正的父级时

    这只是为了你的理解

    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)
    

    这很简单

    仅使用引用名称获取所有子 cmets。

    for comment in Queryset:
        if comment.child is none:
            #just display comment
    
        else:
            #display comment and then
            #display comment.child.all()
    

    【讨论】:

    • 这是迄今为止我得到的最奇怪和最好的答案,感谢您的帮助 Bruh。
    【解决方案2】:

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

    What is `related_name` used for in Django?

    【讨论】:

      猜你喜欢
      • 2015-10-08
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 2010-11-02
      • 1970-01-01
      • 2020-01-16
      • 2011-12-02
      • 2020-03-08
      相关资源
      最近更新 更多