¿Mostrar solo las últimas 3 publicaciones en Django?

Tengo una aplicación de blog en Django. Quiero mostrar las últimas 3 publicaciones de blog en otra página, pero solo puedo mostrar todas las publicaciones de blog ordenadas por fecha.

¿Cómo puedo mostrar las últimas 3 publicaciones?

¿Filtraré esto en las vistas o en las tags de la plantilla?

modelos.py

from django.db import models from django.core.urlresolvers import reverse # Create your models here. class Post(models.Model): title = models.CharField(max_length=200) slug = models.SlugField(unique=True, max_length=255, null=True) pub_date = models.DateTimeField() excerpt = models.TextField(null=True) text = models.TextField() header_image = models.FileField(upload_to='blog/%Y/%m/%d', null=True, blank=True) post_color = models.CharField(max_length=20, null=True) tags = models.CharField(max_length=80, blank=True) published = models.BooleanField(default=True) def __unicode__(self): return u'%s' % self.title def get_absolute_url(self): return reverse('blog.views.post', args=[self.slug]) 

vistas.py

 from django.shortcuts import render, get_object_or_404 from blog.models import Post def about(request): # get the blog posts that are published posts = Post.objects.filter(published=True).order_by('-pub_date') # now return the rendered template return render(request, 'blog/about.html', {'post': posts}) 

about.html

 {% for post in post %} 

{{ post.title }}

{{ post.excerpt }}

{% endfor %}

Prueba esto,

 posts = Post.objects.filter(published=True).order_by('-pub_date')[0:3] 

Trate de obtener subarray de los primeros 3 elementos. Deberia de funcionar.

 posts = Post.objects.filter(published=True).order_by('-pub_date')[:3]