簡體   English   中英

如何在DJANGO模板中過濾和計算對象?

[英]How can I filter and count objects in DJANGO template?

您好我想問這個因為我是django的新手,我的麻煩是我想要計算有多少評論有帖子並將其放入html模板。 但問題是我使用for來收集數據庫中的所有事件,但我只想顯示“for”所顯示的每個事件的注釋計數。 這是我的模型,視圖和模板。 非常感謝。

楷模

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)  

視圖

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 %}

我想在html的那個部分顯示它所說的評論..當然還有一個標簽,但我只是不知道這個標簽或者怎么做。

您可以在模型上創建輔助方法,以幫助您顯示注釋的數量。

像這樣的東西:

class Event(TimeStampModel):
    ...

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

並在評論中:

{{event.comments_count}}

可以在此處找到有關反向查找的更多文檔

如果你沒有過濾,就像@MadWombat提到的那樣,你可以這樣做

{{event.comments_set.count}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM