Проверьте, ответил ли уже кто-нибудь на сообщение Вопрос в Django

Я создаю дискуссионный форум, где пользователь может задавать вопросы и отвечать на вопросы других. Я хочу показывать "Ответил", если вопрос уже отвечен, и показывать "Еще не ответил", если на вопрос не ответил ни один пользователь

Моя модель.py

class Post(models.Model):
user1 = models.ForeignKey(User, on_delete=models.CASCADE, default=1)
post_id = models.AutoField
post_content = models.CharField(max_length=5000)
timestamp= models.DateTimeField(default=now)
image = models.ImageField(upload_to="images",default="")
def __str__(self):
   return f'{self.user1} Post'

class Replie(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, default=1)
reply_id = models.AutoField
reply_content = models.CharField(max_length=5000) 
post = models.ForeignKey(Post, on_delete=models.CASCADE, default='')
timestamp= models.DateTimeField(default=now)
image = models.ImageField(upload_to="images",default="")
def __str__(self):
   return f'{self.user1} Post'

View.py

def forum(request):
user = request.user
profile = Profile.objects.all()
if request.method=="POST":   
    user = request.user
    image = request.user.profile.image
    content = request.POST.get('content','')
    post = Post(user1=user, post_content=content, image=image)
    post.save()
    messages.success(request, f'Your Question has been posted successfully!!')
    return redirect('/forum')
posts = Post.objects.filter().order_by('-timestamp')

return render(request, "forum.html", {'posts':posts})


def discussion(request, myid):
post = Post.objects.filter(id=myid).first()
replies = Replie.objects.filter(post=post)
if request.method=="POST":
    user = request.user
    image = request.user.profile.image
    desc = request.POST.get('desc','')
    post_id =request.POST.get('post_id','')
    reply = Replie(user = user, reply_content = desc, post=post, image=image)
    reply.save()
   
    messages.success(request, f'Your Reply has been posted successfully!!')
    return redirect('/forum')
return render(request, "discussion.html", {'post':post, 'replies':replies})    

в моем forum.html я хочу показать эти сообщения.

Вы можете получить доступ к количеству ответов на сообщение в вашем шаблоне с помощью post.replie_set.count (предполагается, что вы перебираете сообщения с помощью {% for post in posts %}. Учитывая это, вы можете вывести нужную вам информацию внутри блока оператора if в вашем forum.html файле:

...
{% for post in posts %}
  ...
  {% if post.replie_set.count > 0 %}
    <p>Answered</p>
  {% else %}
    <p>Not answered yet</p>
  {% endif %}
  ...
{% endfor %}
...

Таким образом мы проверяем, есть ли у сообщения более 0 ответов (то есть на него ответили). В противном случае у него нет ответов, поэтому мы показываем, что на него не ответили.

Вернуться на верх