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

Discussão em 'Python' iniciado por Stack, Outubro 2, 2024.

  1. Stack

    Stack Membro Participativo

    I'm new in Django, my trouble is that I want to count how many comments there are for a post and put it into the html template. But the thing is that I'm using for to gather all the events in the db, but I just want to show only the count of comments that have every event that the "for" are showing.

    These are my models, views, and templates.

    Thank you so much.

    MODELS

    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 TEMPLATE

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


    I want to show it just in that part of the html where it says comments. with a tag of course, but I just don't know which tag or how to do it.

    Continue reading...

Compartilhe esta Página