2011-01-21 9 views
1

後述のように私は2つのモデルがあります:Djangoでは、あるテーブルからデータを選択し、対応するテーブルから数えて出力するにはどうすればよいですか?

class Post(models.Model): 
    title = models.CharField(max_length=60) 
    details = models.TextField() 

class Comment(models.Model): 
    blog_post = models.ForeignKey(Post) 
    name = models.CharField(max_length=40) 
    comment = models.TextField() 

私はポストからすべてのエントリおよび各ポストのコメントに対応する数を示す図を書きたいです。

私はコメントを行うことによってカウントを取得することができます知っている:Comment.objects.filter(blog_post__title__icontains='xxx').count()

私はちょうど出力に、すべての記事が表示され、各ポストは、対応するコメント数(単なる数ではなく、実際に持つべきHTMLページをしたいですコメントエントリ/データ)。これはどうすればいいですか?投稿のリストとそれに対応する投稿のコメント数をテンプレートに渡すにはどうすればよいですか?

答えて

2

aggregationを使用してください。

from django.db.models import Count 
posts = Post.objects.all().annotate(comment_count=Count('comment')) 

今すぐpostsクエリセット内の各ポストは、関連の数であるcomment_count属性を持っている:あなたが投稿のリストを取得しているとき、あなたは、同時に関連するコメントをカウントしたいDjangoに教えますコメント。

+0

ああ、うまくいった! Django Docsでそれを逃しました。ありがとう! –

関連する問題