from django.db import models from wagtail.core.models import Page from wagtail.core.fields import RichTextField from wagtail.admin.edit_handlers import FieldPanel from wagtail.search import index class BlogIndexPage(Page): intro = RichTextField(blank=True) content_panels = Page.content_panels + [ FieldPanel('intro', classname="full") ] def get_context(self, request, *args, **kwargs): """ Overrides the default context to include only published pages, ordered by reverse chronological order. These child pages can be accessed in the template using `blogpages` instead of page.get_children. """ context = super().get_context(request) blogpages = self.get_children().live().order_by("-first_published_at") context["blogpages"] = blogpages return context class BlogPage(Page): date = models.DateField("Post date") intro = models.CharField(max_length=250) body = RichTextField(blank=True) search_fields = Page.search_fields + [ index.SearchField("intro"), index.SearchField("body") ] content_panels = Page.content_panels + [ FieldPanel('date'), FieldPanel('intro'), FieldPanel('body', classname="full"), ]