将可订购模型添加到Wagtail CMS中的自定义设置

时间:2017-08-03 12:22:08

标签: django wagtail

我想在适当的地方组织常见的网站元素。例如,站点页脚元素。据我所知,网站设置是一个很好的方法。一切都很顺利,直到我决定在那里添加Orderable模型才能构建一种可迭代列表,其中一些项目包含属性“text”,“URL link”。我遇到了麻烦,平常的方式我习惯在页面模型中应用并没有帮助我。这是代码:

@register_setting
class SiteFooterSettings(BaseSetting):
    class Meta:
        verbose_name = _('Footer Settings')

    blog_title = models.CharField(_('Title'), max_length=50, null=True, blank=True)
    blog_article_button_text = models.CharField(_('Article Button Text'), max_length=50, null=True, blank=True)

    panels = [
        MultiFieldPanel(
            heading=_('Our Blog'),
            children=[
                FieldPanel('blog_title'),
                FieldPanel('blog_article_button_text'),
            ],
            classname='collapsible'
        ),

        MultiFieldPanel(
            heading=_('Blog Menu Items'),
            children=[
                InlinePanel('blog_menu_items', label=_('Blog Menu Item')),
            ],
            classname='collapsible'
        ),
    ]


class SettingsBlogMenu(Orderable):
    page = ForeignKey('ds.SiteFooterSettings', related_name='blog_menu_items')
    blog_menu_item = models.CharField(_('Item'), max_length=70, null=True, blank=True)
    blog_menu_item_url = models.CharField(_('URL'), max_length=70, null=True, blank=True)

    panels = [
        FieldPanel('blog_menu_item'),
        FieldPanel('blog_menu_item_url')
    ]

通常我使用ParentalKey将这种类型的列表绑定到页面。虽然在迁移过程中Django会抛出错误并建议将其更改为外键。最后我明白了     “/ admin / settings / ds / sitefootersettings / 2 /中的KeyError     'blog_menu_items'

这里有什么问题?感谢。

1 个答案:

答案 0 :(得分:1)

更新。最近我找到了这个帖子。

https://github.com/wagtail/wagtail/issues/3435

第一篇文章包含非常清晰的代码示例如何处理。它对我有用。