2 votes

Ajouter un modèle de commande aux paramètres personnalisés dans Wagtail CMS

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.

1voto

miric Points 23

MISE À JOUR. Récemment, j'ai trouvé ce fil de discussion.

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

Le premier message inclut un exemple de code très clair sur la façon de traiter. Cela a fonctionné pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X