2017-08-03 30 views
2

我想在适当的位置组织常见网站元素。例如,站点页脚元素。据我所知网站设置是一个很好的方法。一切都还好,直到我决定在那里添加Orderable模型,以便能够构建一种包含属性“文本”,“URL链接”的可迭代列表。我遇到了一个麻烦,通常的方式我用在页面模型申请没有帮助我。这里是代码:将可订购型号添加到W CMS CMS的自定义设置中

@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抛出一个错误,并建议将其更改为外键。最后我得到 “KeyError异常在/管理/设置/ DS/sitefootersettings/2/ 'blog_menu_items'

有什么不对吗?谢谢。

回答