2017-08-26 113 views
1

我創建了一個模型來顯示主頁上的帖子,但只希望顯示三條最新帖子。我是否需要爲此使用分頁,或者是否有我可以使用的鉤子?W - - 僅在主頁上顯示三條最新帖子

我想我可以使用分頁,只是不包括'下一步'按鈕,但這似乎有點像黑客,我想這樣做是正確的。

我對Django和Python仍然很陌生,我將繼續嘗試,但如果有人能指出我正確的方向,我將非常感激。

這裏的首頁模式:

from __future__ import unicode_literals 

from django.db import models 

from wagtail.wagtailcore.models import Page 
from wagtail.wagtailcore.fields import RichTextField 
from wagtail.wagtailadmin.edit_handlers import FieldPanel 

from blog.models import BlogPage 


class HomePage(Page): 
    def blogs(self): 
     blogs = BlogPage.objects.all() 
     blogs = blogs.order_by('-date') 
     return blogs 

這裏的BlogPage型號:

class BlogPage(Page): 
body = RichTextField(verbose_name=_('body'), blank=True) 
tags = ClusterTaggableManager(through=BlogPageTag, blank=True) 
date = models.DateField(
    _("Post date"), default=datetime.datetime.today, 
    help_text=_("This date may be displayed on the blog post. It is not " 
       "used to schedule posts to go live at a later date.") 
) 
header_image = models.ForeignKey(
    'wagtailimages.Image', 
    null=True, 
    blank=True, 
    on_delete=models.SET_NULL, 
    related_name='+', 
    verbose_name=_('Header image') 
) 
author = models.ForeignKey(
    settings.AUTH_USER_MODEL, 
    blank=True, null=True, 
    limit_choices_to=limit_author_choices, 
    verbose_name=_('Author'), 
    on_delete=models.SET_NULL, 
    related_name='author_pages', 
) 

search_fields = Page.search_fields + [ 
    index.SearchField('body'), 
] 
blog_categories = models.ManyToManyField(
    BlogCategory, through=BlogCategoryBlogPage, blank=True) 

settings_panels = [ 
    MultiFieldPanel([ 
     FieldRowPanel([ 
      FieldPanel('go_live_at'), 
      FieldPanel('expire_at'), 
     ], classname="label-above"), 
    ], 'Scheduled publishing', classname="publishing"), 
    FieldPanel('date'), 
    FieldPanel('author'), 
] 

def save_revision(self, *args, **kwargs): 
    if not self.author: 
     self.author = self.owner 
    return super(BlogPage, self).save_revision(*args, **kwargs) 

def get_absolute_url(self): 
    return self.url 

def get_blog_index(self): 
    # Find closest ancestor which is a blog index 
    return self.get_ancestors().type(BlogIndexPage).last() 

def get_context(self, request, *args, **kwargs): 
    context = super(BlogPage, self).get_context(request, *args, **kwargs) 
    context['blogs'] = self.get_blog_index().blogindexpage.blogs 
    context = get_blog_context(context) 
    context['COMMENTS_APP'] = COMMENTS_APP 
    return context 

class Meta: 
    verbose_name = _('Blog page') 
    verbose_name_plural = _('Blog pages') 

parent_page_types = ['blog.BlogIndexPage'] 


BlogPage.content_panels = [ 
    FieldPanel('title', classname="full title"), 
    MultiFieldPanel([ 
     FieldPanel('tags'), 
     InlinePanel('categories', label=_("Categories")), 
    ], heading="Tags and Categories"), 
    ImageChooserPanel('header_image'), 
    FieldPanel('body', classname="full"), 
] 

...和這裏的HTML:

 <div class="row"> 
     <div class="col-md-10 col-md-offset-1 blocks home-page-posts"> 
     {% for blog in page.blogs %} 
     <div class="col-md-4"> 
     <a class="blog-post-link" href="{% pageurl blog %}"> 
      <h3>{{ blog.title }}</h3> 
     </a> 
     <div class="blog-intro"> 
      {{ blog.body|richtext|truncatewords_html:50 }} 
      <a class="read-more" href="{% pageurl blog %}">Read More &raquo;</a> 
     </div> 
    </div> 
     {% endfor %} 
    </div> 
    </div> 

回答

相關問題