#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