将可订购模型添加到 Wagtail CMS 中的自定义设置
Add Orderable Model to custom settings in Wagtail CMS
我想在适当的位置组织常见的网站元素。例如,站点页脚元素。据我所知,站点设置是一个很好的方法。一切都很顺利,直到我决定在那里添加 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/ 处的键错误
'blog_menu_items'
这是怎么回事?谢谢
更新。最近我发现了这个话题。
https://github.com/wagtail/wagtail/issues/3435
首先post包括非常清楚的代码示例如何处理。它对我有用。
我想在适当的位置组织常见的网站元素。例如,站点页脚元素。据我所知,站点设置是一个很好的方法。一切都很顺利,直到我决定在那里添加 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/ 处的键错误 'blog_menu_items'
这是怎么回事?谢谢
更新。最近我发现了这个话题。
https://github.com/wagtail/wagtail/issues/3435
首先post包括非常清楚的代码示例如何处理。它对我有用。