2016-11-30 6 views
1

こんにちは私はちょうどdjangoの新しい私の問題は、私はいくつのコメントが投稿を持っているかをカウントし、それをHTMLテンプレートに入れたいからです。 しかし、事は、私は、データベース内のすべてのイベントを収集するために使用していますが、私はちょうど "for"が表示されているすべてのイベントを持っているコメントの数を表示したい。 これは私のモデル、ビュー、およびテンプレートです。 ありがとうございます。DJANGOテンプレートのオブジェクトをフィルタリングしてカウントするにはどうすればよいですか?

MODELSタグと私はちょうどそれがコメントを述べていたHTMLの一部でそれを見せたい

class Event(TimeStampModel): 
    name = models.CharField(max_length=200, unique=True) 
    slug = models.SlugField(editable=False) 
    summary = models.TextField(max_length=255) 
    content = models.TextField() 
    category = models.ForeignKey(Category) 
    place = models.CharField(max_length=50) 
    start = models.DateTimeField() 
    finish = models.DateTimeField() 
    image = models.ImageField(upload_to = 'eventos') 
    is_free = models.BooleanField(default=True) 
    amount = models.DecimalField(max_digits=6, decimal_places=0, default=0) 
    views = models.PositiveIntegerField(default=0) 
    organizer = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True) 

    def save(self, *args, **kwargs): 
     if not self.id: 
      self.slug = slugify(self.name) 
     super(Event, self).save(*args, **kwargs) 

    def __unicode__(self): 
     return self.name 

class Comments(TimeStampModel): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL) 
    event = models.ForeignKey(Event) 
    content = models.TextField() 

    def __unicode__(self): 
     return "%s %s" % (self.user.username, self.event.name) 

VIEW

class IndexView(TemplateView): 
    template_name = 'eventos/index.html' 
    def get_context_data(self, **kwargs): 
     context = super(IndexView, self).get_context_data(**kwargs) 
     context['events'] = Event.objects.all().order_by('-created')[:6] 
     context['categories'] = Category.objects.all() 
     context['comments'] = Comments.objects.all() 
     return context 

HTMLテンプレート

{% for event in events %} 
    <li class="span4 "> 
     <div class="thumbnail thumbnail-1"> 
     <h3 class="titulo-fix" >{{ event.name }}</h3> 
      <img class="center-cropped" src="{{ event.image.url }}" alt=""> 
      <section> 
       <a href="#"><h3>{{ event.category }} </h3></a> 
        <div class="meta"> 
         <time datetime="2012-11-09" class="date-1"><i class="icon-calendar"></i> {{ event.start }}</time> 
         <div class="name-author"><i class="icon-user"></i> <a href="#">{{ event.organizer }}</a></div> 
         <a href="#" class="comments"><i class="icon-comment"></i> comments</a> 
        </div> 
        <div class="clear"></div> 
        <p>{{ event.place }}</p> 
        <a href="#" class="btn btn-1">Leer mas..</a> 
      </section> 
     </div> 
    </li> 
    {% endfor %} 

..もちろん、しかし、私はちょうどどのようにタグを知っていないか、それを行う方法。

答えて

2

コメントの数を表示するのに役立つヘルパーメソッドをモデルに作成できます。

このような何か:

class Event(TimeStampModel): 
    ... 

    def comments_count(self): 
     #Your filter criteria can go here. 
     return self.comments_set.count() 

とコメントで:

{{event.comments_count}} 

More documentation on the reverse lookups can be found here

@MadWombatが言及、とあなたはちょうど

を行うことができ、フィルタリングされていない場合
{{event.comments_set.count}} 
+0

couldn '{{event.comments_set.count}} 'を使うだけですか? –

+0

間違いなく、OPにはフィルタリング機能についても言及されていますが、フィルタ基準は指定されていません。とにかく答えを編集しました。ありがとうございます – karthikr

+0

@MadWombat Thatsはうまくいきます!おっと、ありがとう。 ところで、あなたが私に男たちを見せた方法は、より安全ですか?あまりにもありがとうございます – soultaker

関連する問題