2015-12-31 3 views
1

Так у меня есть эта модель:Как отображать последние 5 сообщений по дате публикации?

class Post(models.Model): 
    title = models.CharField(max_length=100, default='') 
    text = models.TextField(default='') 
    status = models.CharField(max_length=1, choices=STATUS_CHOICES,default='w') 
    description = models.TextField(default='', max_length=300) 
    creation_date = models.DateTimeField(auto_now_add=True, editable=False) 

    def __unicode__(self): 
     return self.title 

    def edit_text(self, text): 
     self.text = text 

    class Meta: 
     get_latest_by = 'creation_date' 

Мое мнение:

def blog(request): 
return render_to_response('home/blog.html', { 
    'posts': Post.objects.filter()[:5] 
}) 

и шаблон:

{% for post in posts %} 
     <a class = "titles">{{ post.title }}</a> 
     <p class = "Parg">{{ post.description }}</a> 
     <br> 
     <br> 
{% endfor %} 

И я хочу в моем шаблоне, который будет показан последние 5 сообщений (по дате), и если я нажму «Показать больше», отобразите следующие 5 сообщений.

ответ

2

Вы можете передать последние 5 сообщений (заказанные creation_date) в шаблон с помощью order_by:

def blog(request): 
    return render_to_response('home/blog.html', { 
     'posts': Post.objects.order_by('-creation_date')[:5] 
    }) 

- предшествующее creation_date указывает, что даты, возвращаемые будет в порядке убывания, т.е. самой последней датой первого ,

Чтобы добавить функциональные возможности для отображения следующих 5 постов, я хотел бы вернуться 10 последних Post сек в шаблон с помощью метода я предложил, а затем манипулировать их, используя другой метод (возможно, основной JavaScript),

0
def blog(request): 
    return render(request, 'home/blog.html', { 
     'posts': Post.objects.order_by('-creation_date')[:5] 
    }) 

render вместо render_to_response, который позаботится о вас для использования в контексте контекста.

Смежные вопросы