我正在尝试访问Django / Wagtail CMS博客中子页面的正文。我可以返回子页面标题,但我不知道如何使用它来获取其余的子页面属性。父级是IndexPage,子级是IndexListSubPage。我的模特是:
class IndexPage(Page):
body = RichTextField(blank=True)
feed_image = models.ForeignKey(
'wagtailimages.Image',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+'
)
content_panels = Page.content_panels + [
FieldPanel('body', classname="full"),
ImageChooserPanel('feed_image'),
]
def get_context(self, request):
context = super(IndexPage, self).get_context(request)
context['sub_pages'] = self.get_children()
return context
class IndexListSubPage(Page):
body = RichTextField(blank=True)
feed_image = models.ForeignKey(
'wagtailimages.Image',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+'
)
content_panels = Page.content_panels + [
FieldPanel('body', classname="full"),
ImageChooserPanel('feed_image'),
]
我在模板中尝试了各种组合:
{{ sub_pages }} //returns <QuerySet [<Page: Page title here>]>
{{ sub_pages.body }} //returns nothing
这将返回子页面的页面标题,但我还需要其他属性,例如正文文本。有任何想法吗?我也试过here的图像模板设置 - 再次,我可以获得标题,但没有属性。该页面在管理界面中同时包含图像和正文文本。
答案 0 :(得分:1)
我按照@gasman的建议将模型更改为包含.specific()
。工作模式是:
class ProjectsPage(Page):
body = RichTextField(blank=True)
content_panels = Page.content_panels + [
FieldPanel('body', classname="full"),
]
def get_context(self, request):
context = super(ProjectsPage, self).get_context(request)
context['sub_pages'] = self.get_children().specific()
print(context['sub_pages'])
return context
在模板中:
{% with sub_pages as pages %}
{% for page in pages %}
{{ page.title }}
{{ page.body }}
{% endfor %}
{% endwith %}
现在正在呈现子页面的标题和正文。