Answer the question
In order to leave comments, you need to log in
How to make the right site structure on WagtailCMS?
Добрый день!
Я делаю каталог статей, что то вроде urbaninfluence.com/work/. Есть главная страница, где представлен список категорий, есть страницы категорий со списком статей и есть сами стать. Сделать все это хочется на Wagtail, нравится их StreamField. Мне кажется, на его основе можно сделать удобный инструмент для редакторов.
Но я не могу понять, как должна выглядеть структура сайта, то есть то, что написано в models.py. Статьи у меня будут вагитэйловские Page с StreamField.
class ItemPage(Page):
........
body = StreamField([
......
Answer the question
In order to leave comments, you need to log in
You can use pages (inherit from Page) for the main page, for the category page and for the article page.
Those. you need three models:
Wagtail uses a tree structure for pages. Those. the page tree will look something like this:
- Root
-- Home (HomePage)
---- Category 1 (CategoryPage)
----- Article 1 (ArticlePage)
----- Article 2 (ArticlePage)
---- Category 2 (CategoryPage)
----- Article 3 (ArticlePage)
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 = []
Если этот Вагтейл на основе джанго - нужно 3 модели.
Категория и ее атрибуты внутри.
Статья ее атрибуты и внешний ключ от Категории.
По-джанговски: список категорий - просто вьюха с Category.objects.all()
Список статей Article.objects.filter(categoryid=some_id)
Статья Article.objects.get(id=some_id)
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question