J'aimerais organiser les éléments communs du site dans un endroit approprié. Par exemple, les éléments du pied de page du site. Pour autant que je sache, les paramètres du site constituent une bonne approche. Tout allait bien jusqu'à ce que je décide d'y ajouter le modèle Orderable pour pouvoir construire une sorte de liste itérative dont certains éléments contiennent les attributs "text", "URL link". J'ai rencontré un problème, la méthode habituelle que j'appliquais dans les modèles de page ne m'a pas aidé. Voici le code :
@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')
]
Habituellement, j'utilise ParentalKey pour lier ce type de liste à une page. Cependant, lors de la migration, Django jette une erreur et conseille de la remplacer par une clé étrangère. Finalement, j'obtiens "KeyError at /admin/settings/ds/sitefootersettings/2/ blog_menu_items
Qu'est-ce qui ne va pas ici ? Merci.