Вы можете использовать страницы (наследоваться от Page) для главной страницы, для страницы категории и для страницы статьи.
Т.е. вам нужны три модели:
- class HomePage(Page)
 
- class CategoryPage(Page)
 
- class ArticlePage(Page)
 
Wagtail использует древовидную структуру для страниц. Т.е. дерево страниц будет примерно таким:
- Root
-- Home (HomePage)
---- Category 1 (CategoryPage)
----- Article 1 (ArticlePage)
----- Article 2 (ArticlePage)
---- Category 2 (CategoryPage)
----- Article 3 (ArticlePage)
Вы можете 
ограничить для каждого типа страницы какие страницы могут использоваться как дочерние (subpage_types) и какие типы страниц могут использоваться как родительские (parent_page_types).
Вот пример:
class HomePage(Page):
    # Ваши поля, если нужно
    # Тут не ограничиваем дочерние и родительские страницы
    # т.к. на сайте могут быть не только 3 типа страниц
class CategoryPage(Page):
    # Ваши поля, если нужно
    # Может быть создана только как дочерняя страница для HomePage
    parent_page_types = ['your_django_app_name.HomePage']
    # Дочерними страницами могут быть только CategoryPage.
    subpage_types = ['your_django_app_name.CategoryPage']
class ArticlePage(Page):
    # Ваши поля. StreamField, или что угодно
    # Может быть создана только как дочерняя страница для CategoryPage
    parent_page_types = ['your_django_app_name.CategoryPage']
    # Дочерних страниц у этой страницы быть не может
    subpage_types = []
Есть другие варианты реализации - выбор зависит от ваших требований. Вы можете использовать 
сниппеты или 
теги в качестве категорий.
P.S.: ответ запоздал, но надеюсь он будет полезен тем у кого возникнет похожий вопрос.