#python #django #postgresql #django-models #wagtail-streamfield
#python #django #postgresql #django-модели #wagtail-streamfield
Вопрос:
Я создаю веб-страницу, используя wagtail CMS, Django, Postgresql, и в нижней части страницы я создаю раздел, в котором я буду отображать видео с использованием разбивки на страницы.
Я пытаюсь извлечь данные из моделей Django, используя all_posts = MultiBlogPage.objects.values("all_blogs_content_pages")
и я получаю вывод в виде
<PageQuerySet [{'all_blogs_content_pages':
[
<wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7f35ee2d21d0>,
<wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7f35ed8fa2e8>,
<wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7f35f617e6a0>,
<wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7f35ed90aac8>,
<wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7f35ed90af60>,
<wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7f35ed90a978>,
<wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7f35ed90ae48>,
<wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7f35ee2b9320>,
<wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7f35ee2b9630>,
<wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7f35ee339f28>,
<wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7f35ee339470>
]}]>
Не мог бы кто-нибудь, пожалуйста, взглянуть на мой код ниже и сообщить мне, как получить точные значения из моделей Django?
def get_context(self, request, *args, **kwargs):
context = super(MultiBlogPage, self).get_context(request, *args, **kwargs)
context['multiblog_page'] = self
// The name of the stream field panel is "all_blogs_content_pages"
all_posts = MultiBlogPage.objects.values("all_blogs_content_pages")
print("all_posts...",all_posts)
paginator = Paginator(all_posts, 3)
print("paginator", paginator)
page = request.GET.get("page")
try:
posts = paginator.page(page)
except PageNotAnInteger:
posts = paginator.page(1)
except EmptyPage:
posts = paginator.page(paginator.num_pages)
context["posts"] = posts
return context
Ответ №1:
Модели Wagtail можно использовать как стандартные модели django, поэтому преобразование моделей в список dicts не представляется необходимым.
live()
фильтрует только опубликованные версии и specific()
получает фактическую модель из ваших моделей.py, а не базовый класс страницы.
def get_context(self, request, *args, **kwargs):
context = super(MultiBlogPage, self).get_context(request, *args, **kwargs)
context['multiblog_page'] = self
// The name of the stream field panel is "all_blogs_content_pages"
all_posts = MultiBlogPage.objects.live().specific()
print("all_posts...",all_posts)
paginator = Paginator(all_posts, 3)
print("paginator", paginator)
page = request.GET.get("page")
try:
posts = paginator.page(page)
except PageNotAnInteger:
posts = paginator.page(1)
except EmptyPage:
posts = paginator.page(paginator.num_pages)
context["posts"] = posts
return context
template.html
<li>
{{ post.all_blogs_content_pages }}
</li>
Комментарии:
1. Спасибо за ваш ответ. Это было полезно