检查是否有人已经回答了 Django 中的 post 问题
check if someone already answered the post Question in Django
我正在建立一个论坛,用户可以在其中提问并回复其他人的问题。
如果问题已经回答,我想显示“已回答”,如果问题没有被任何用户回答,我想显示“尚未回答”
我的model.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
访问 post 在您的模板中有多少回复(假设您正在使用 {% for post in posts %}
遍历 post。有了这个考虑到您可以在 forum.html
文件的 if
语句块中显示您想要的信息:
...
{% for post in posts %}
...
{% if post.replie_set.count > 0 %}
<p>Answered</p>
{% else %}
<p>Not answered yet</p>
{% endif %}
...
{% endfor %}
...
这样我们就可以检查 post 是否有超过 0 个回复(也就是说,它已经被回复了)。否则它没有回复所以我们显示它没有回答。
我正在建立一个论坛,用户可以在其中提问并回复其他人的问题。 如果问题已经回答,我想显示“已回答”,如果问题没有被任何用户回答,我想显示“尚未回答”
我的model.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
访问 post 在您的模板中有多少回复(假设您正在使用 {% for post in posts %}
遍历 post。有了这个考虑到您可以在 forum.html
文件的 if
语句块中显示您想要的信息:
...
{% for post in posts %}
...
{% if post.replie_set.count > 0 %}
<p>Answered</p>
{% else %}
<p>Not answered yet</p>
{% endif %}
...
{% endfor %}
...
这样我们就可以检查 post 是否有超过 0 个回复(也就是说,它已经被回复了)。否则它没有回复所以我们显示它没有回答。