Проверьте, ответил ли уже кто-нибудь на сообщение Вопрос в 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 ответов (то есть на него ответили). В противном случае у него нет ответов, поэтому мы показываем, что на него не ответили.