Как можно включить обычный контент для просмотра Django на странице Wagtail?

#django #wagtail

#django #wagtail

Вопрос:

У меня есть веб-сайт, работающий на Django, который использует Wagtail для большинства страниц (которые представляют собой просто текстовый контент, редактируемый через пользовательский интерфейс администратора Wagtail). Однако у меня есть некоторый контент, который необходимо динамически отображать из моей собственной модели Django (скажем, это список раздаточных материалов). Я бы хотел, чтобы этот контент отображался на странице Wagtail, на которой также были бы некоторые модели Wagtail (например, верхнее меню, некоторый вводный текст). Каков наилучший способ сделать это? Я думал о том, чтобы сделать список раздаточных материалов конечной точкой API и отобразить его с помощью JavaScript XHR, но, похоже, должен быть хороший способ сделать это на стороне сервера.

Ответ №1:

Предполагая, что вводный текст представляет собой блок в потоковом поле Wagtail, вы также могли бы определить блок Wagtail, который ссылается на модель Django. https://pypi.org/project/wagtail-modelchooser / является полезным расширением, которое предоставляет эту функциональность. Это позволяет отображать объекты из экземпляров модели Django в вашем потоковом контенте Wagtail.

Ответ №2:

Одним из вариантов было бы создать свойство в вашей модели страницы, которое извлекает все, что вы ищете, из этой другой модели

 # rest of your imports
...
from handouts import Handouts

class MyPage(Page):
# rest of your page's fields
...
    @property
    def get_handouts(self):
        handouts = Handouts.objects.all()
        return handouts