如何使用Django模型从Wagtail CMS流字段面板获取值?

2024-04-27 15:14:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用wagtail CMS、Django、Postgresql构建一个网页,在页面底部,我正在构建一个部分,在那里我将使用分页显示视频

我正在尝试使用all_posts = MultiBlogPage.objects.values("all_blogs_content_pages")从Django模型检索数据

我得到的结果是

<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

Tags: corestreamobjectcontextpagepagesallblock
1条回答
网友
1楼 · 发布于 2024-04-27 15:14:33

Wagtail模型可以像标准django模型一样使用,因此似乎没有必要将模型转换为DICT列表

live(),仅筛选已发布的版本,并且specific()从models.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>

相关问题 更多 >