2015-09-19 74 views
0

我有一个程序发布了一些地方并在HTML模板中显示它们,但我也想向用户展示我拥有的这些地方中的很多地方,并且想知道如何到达这个。如何在Django模板中显示对象数量

我在models.py:

class Places(models.Model): 
    name=models.CharField(max_length=100) 
    text=models.TextField() 
    website=models.URLField() 
    published_date = models.DateTimeField(
      blank=True, null=True) 

def __str__(self): 
    return self.name 

def publish(self): 
     self.published_date = timezone.now() 
     self.save() 

在views.py:

def places(request): 
    places=Places.objects.order_by('-published_date')[:10] 
    return render(request, 'templates/places.html', {'places':places}) 

和HTML模板:

<div class="container"> 
<h2>Places<span class="badge"> HERE'S WHERE I WANT THE NUMBER OF PLACES</h2> 
</div> 

我希望你能帮助我。谢谢你的回答

回答

2

你不能在没有写自定义标签的情况下得到django模板中的对象数。

即使你可以但它会是10,因为你特别说的地方只包括10个对象。

你应该通过上下文而不是通过places_count到模板:

def places(request): 
    places = Places.objects.order_by('-published_date')[:10] 
    places_count = Places.objects.count() 
    return render(
     request, 'templates/places.html', {'places':places, 'places_count': places_count} 
    ) 

然后在模板:

<div class="container"> 
    <h2>Places <span class="badge">{{ places_count }}</span></h2> 
</div> 
+0

非常感谢! :) – INME

1

您可以使用此模板过滤器:

{{ places|length }} 

Documentation link length

不要过度使用COUNT()和存在()

Optimization

+0

谢谢,这也工作正常:) – INME

+0

没问题,但我认为你应该使用这个解决方案,因为[this](https://docs.djangoproject.com/en/1.8/topics/db/optimization/ #don-t-overuse-count-and-exists)不需要额外的查询。 –

相关问题