模板
如果标题没有太大意义,请道歉。我不太明白我缺乏什么知识。
我有一个Post和Comment模型在我的Django项目。我想做的是列出所有的Blog
帖子,并显示每个帖子的评论数. 请看下面我的代码。
models.py
class Blog(models.Model):
objects = models.Manager()
title = models.CharField(max_length=100, blank=True)
body = models.CharField(max_length=10000, blank=True)
created_at = models.DateField(auto_now_add=False)
class Comment(models.Model):
objects = models.Manager()
post = models.ForeignKey(Blog, on_delete=models.CASCADE, related_name='comment')
views.py
def main_page(request):
all_blogs = Blog.objects.all()
context = {
'blog' : blog,
}
return render(request, 'main/home.html', context)
模板
{% for b in blog %}
<div>
<p>{{b.title}}</p>
<div>
{{WHERE THE NUMBER OF THIS POST'S COMMENTS IS DISPLAYED}}
</div>
</div>
{% endfor %}
所有我需要的是评论的数量,但不知道怎么做。有没有办法在模板中实现这一点?或者我必须在views.py
中添加一些代码吗?
可以用以下方式标注Blog
对象对应的Comment
对象个数:
from django.db.models importCount
def main_page(request):
all_blogs = Blog.objects.annotate(
num_comments=Count('comment')
)
context = {
'blogs' : blogs
}
return render(request, 'main/home.html', context)
从该查询集产生的Blog
对象将具有带有相关注释数量的额外属性.num_comments
:
{% for blog in blogs %}
<div>
<p>{{ blog.title }}</p>
<div>
{{blog.num_comments}}
</div>
</div>
{% endfor %}