Wagtail 自定义内联 PageChooser

Wagtail Custom Inline PageChooser

目前我遇到一个奇怪的问题,使用 wagtail。我修改了文档中的一个片段。但似乎我错过了什么。这是我的代码...

目标是允许使用 PageChooser 选择多个页面(并可能稍后在模板中显示链接)

class BlogPage(Page):
    content_panels = Page.content_panels + [
        MultiFieldPanel([
            InlinePanel('related_pages', label="Related Pages"),
        ])
]

class BlogPageRelated(Orderable):
    page = ParentalKey('home.BlogPage', on_delete=models.CASCADE, related_name='related_pages')
    relpages = models.ForeignKey(
        'wagtailcore.Page', on_delete=models.CASCADE, related_name='+', blank=True, null=True
    )
    panels = [
    PageChooserPanel('relpages', 'home.BlogPage'),
]

数据库已填满数据。似乎没有数据传送到模板。模板变量 {{ page.related_pages }} 输出 "home.BlogPageRelated.None"。

{{ page.related_pages }} = home.BlogPageRelated.None 

为了更好地理解这是我采用的片段 - (!) 效果很好!

class BlogPageImage(Orderable):
    page = ParentalKey(BlogPage, on_delete=models.CASCADE, related_name='gallery_images')
    image = models.ForeignKey(
        'wagtailimages.Image', on_delete=models.CASCADE, related_name='+'
    )

    panels = [
        ImageChooserPanel('image'),
    ]

最后我自己解决了。这种内联元素有点奇怪,恕我直言,有点不透明。 Nvm,Wagtail 值得麻烦。

我的内联模型:

class RelatedPage(models.Model):
    page = ParentalKey(BlogPage, on_delete=models.CASCADE, related_name='relpages', default=None)
    relpage = models.ForeignKey(
        'wagtailcore.Page', on_delete=models.CASCADE, related_name='+'
    )
    panels = [
        PageChooserPanel('relpage', 'home.BlogPage'),
    ]

我的模板:

{% for x in page.relpages.all %}
    <a href="{% pageurl x.relpage %}">ax {{ x.specific.title }}</a>
{% endfor %}

我错过了“...page.relpages.all ...”中的 "all"“