我想回复 Django 中的评论功能

I want to make reply to comments feature in Django

我有一个简单的项目,我在那里添加了评论功能。现在我想添加评论回复功能。当我编写并发送答案时,它会注册到 sql 但我无法在前端显示它。

models.py

class Comments(models.Model):
   comment_author = models.ForeignKey(ArticleForm, on_delete=models.CASCADE, related_name='comments')
   commenter_name = models.ForeignKey(User, on_delete=models.CASCADE)
   comment_content = models.TextField()
   commented_date = models.DateTimeField(auto_now_add=True)


   def __str__(self):
       return "'{}' commented by '{}'".format(self.comment_content, self.commenter_name)

   class Meta:
       ordering = ['-commented_date']



class ReplyComment(models.Model):
   reply_comment = models.ForeignKey(Comments, on_delete=models.CASCADE, related_name='replies')
   replier_name = models.ForeignKey(User, on_delete=models.CASCADE)
   reply_content = models.TextField()
   replied_date = models.DateTimeField(auto_now_add=True)

   def __str__(self):
       return "'{}' replied with '{}' to '{}'".format(self.replier_name,self.reply_content, self.reply_comment)

views.py

def detail(request,id):
   article = get_object_or_404(ArticleForm,id=id)
   comments = article.comments.all()
   return render(request, 'detail.html', {'article': article, 'comments': comments})



def replyComment(request,id):
   comments = Comments.objects.get(id=id)

   if request.method == 'POST':
       replier_name = request.user
       reply_content = request.POST.get('reply_content')

       newReply = ReplyComment(replier_name=replier_name, reply_content=reply_content)
       newReply.reply_comment = comments
       newReply.save()
       messages.success(request, 'Comment replied!')
       return redirect('index')

detail.html

<div class="container">
   <a type="text" data-toggle="collapse" data-target="#reply{{comment.id}}" style="float: right;" href="">Reply</a><br>
   {% if replies %}
    {% for reply in replies %}
      <div>
        <div class="fw-bold"><small><b>Name</b></small></div>
        <div style="font-size: 10px;">date</div>
        <small>Reply comment</small><br>
        </div>
     {% endfor %}
    {% endif %}

  <div id="reply{{comment.id}}" class="collapse in">
     <form method="post" action="/article/reply/{{comment.id}}">
        {% csrf_token %}
          <input name="replier_name" class="form-control form-control-sm" type="hidden">
          <input name="reply_content" class="form-control form-control-lg" type="text" placeholder="Reply comment">
          <button type="submit" class="btn btn-primary" style="float: right; margin-top: 5px;">Reply</button>

      </form>
   </div>

我想做的是从 sql 中提取回复并在评论下方显示 如果您能告诉我适合我的代码的解决方案,我将很高兴。谢谢

也许这会奏效:

{% for comment in comments %}
    <div>{{ comment }}</div>
        
    {% for reply in comment.replycomment_set.all %}
    <div>
        <div class="fw-bold"><small><b>Name {{ reply.replier_name }}</b></small></div>
        <div style="font-size: 10px;">date {{ reply.replied_date }}</div>
        <small>Reply comment {{ reply.content }}</small><br>
        </div>
    {% endfor %}

{% endfor %}