从 Django 中的特定 post 获取评论数
Getting the number of comments from a specific post in django
我的查询有点问题。我在 django 的博客网站上工作。对于 posts,我有第一页,其中我将所有 posts 显示为列表,以及它们的详细信息(标题、日期 posted 等),我想显示数字每个 post 的评论以及标题、日期 post 和标签。我不确定如何做到这一点,我需要在模型 类 或呈现页面的视图函数中实现一些东西?
这是模型 类.
class Post(models.Model):
author = models.ForeignKey(
settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.CharField(max_length=500)
content = models.TextField()
tags = models.CharField(max_length=100)
date_posted = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.title
class Comment(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
post = models.ForeignKey(Post, on_delete=models.CASCADE)
comment_text = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
def __str__(self):
return f'{self.user.username} Comment ' + str(self.id)
和视图函数
def blog(request):
context = {
'posts': Post.objects.all(),
'title': 'Blog',
'banner_page_title': 'Blog',
'page_location': 'Home / Blog'
}
return render(request, 'blog/blog.html', context)
在模板中使用反向查找并count
获取相关对象的数量:
{{ post.comment_set.count }}
是这样的吗?
template.html
...
{% for post in posts %}
<div> Title: {{post.title}} </div>
<div> Date Posted: {{post.date_posted}} </div>
<div> Number of Comments: {{post.comment_set.count}} </div>
{% endfor %}
方法一:
您可以在模板中使用它。
{% for post in posts %}
{{ post.comment_set.count }}
{% endfor %}
方法二:
您可以像这样实现模型方法:
class Post(models.Model):
....
def __str__(self):
return self.title
@property
def comment_count(self):
return self.comment_set.count()
您可以像这样在模板中调用模型方法:
{% for post in posts %}
{{ post.comment_count }}
{% endfor %}
我的查询有点问题。我在 django 的博客网站上工作。对于 posts,我有第一页,其中我将所有 posts 显示为列表,以及它们的详细信息(标题、日期 posted 等),我想显示数字每个 post 的评论以及标题、日期 post 和标签。我不确定如何做到这一点,我需要在模型 类 或呈现页面的视图函数中实现一些东西? 这是模型 类.
class Post(models.Model):
author = models.ForeignKey(
settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.CharField(max_length=500)
content = models.TextField()
tags = models.CharField(max_length=100)
date_posted = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.title
class Comment(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
post = models.ForeignKey(Post, on_delete=models.CASCADE)
comment_text = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
def __str__(self):
return f'{self.user.username} Comment ' + str(self.id)
和视图函数
def blog(request):
context = {
'posts': Post.objects.all(),
'title': 'Blog',
'banner_page_title': 'Blog',
'page_location': 'Home / Blog'
}
return render(request, 'blog/blog.html', context)
在模板中使用反向查找并count
获取相关对象的数量:
{{ post.comment_set.count }}
是这样的吗?
template.html
...
{% for post in posts %}
<div> Title: {{post.title}} </div>
<div> Date Posted: {{post.date_posted}} </div>
<div> Number of Comments: {{post.comment_set.count}} </div>
{% endfor %}
方法一:
您可以在模板中使用它。
{% for post in posts %}
{{ post.comment_set.count }}
{% endfor %}
方法二:
您可以像这样实现模型方法:
class Post(models.Model):
....
def __str__(self):
return self.title
@property
def comment_count(self):
return self.comment_set.count()
您可以像这样在模板中调用模型方法:
{% for post in posts %}
{{ post.comment_count }}
{% endfor %}