如果標題沒有多大意義,請道歉。我不太明白我所缺乏的知識。
我的 Django 專案中有一個 Post 和 Comment 模型。我想要做的是列出所有Blog帖子,并顯示每個帖子的評論數量。請在下面查看我的代碼。
模型.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')
視圖.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?
uj5u.com熱心網友回復:
您可以使用Blog相關Comments的數量注釋物件:
from django.db.models import Count
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 %}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/334394.html
