Wagtail - Changer le label de "Titre"

Comment changer le label du champ "titre" pour une classe qui sous-classe "Page" ?

Posté le July 18, 2020

Intro

Lorsque le modèle d'une page est sous-classé du modèle standard Page, il est parfois frustrant de de pas pouvoir choisir le label que l'on veut voir s'afficher dans l'admin de wagtail: wagtail titre label

La solution en une étape

Voici mon modèle de départ:

class BlogPage(Page):
    date = models.DateField("Post date")
    intro = models.CharField(max_length=250)
    body = RichTextField(blank=True)

    search_fields = Page.search_fields + [
        index.SearchField('intro'),
        index.SearchField('body'),
    ]

    content_panels = Page.content_panels + [
        FieldPanel('date'),
        FieldPanel('intro'),
        FieldPanel('body', classname="full"),
    ]

Imaginons que je souhaite remplacer le label Titre par Titre de l'article dans l'admin, il s'agit d'ajouter une méthode init dans ma classe afin de pouvoir modifier ce label en question:

class BlogPage(Page):
    date = models.DateField("Post date")
    intro = models.CharField(max_length=250)
    body = RichTextField(blank=True)

    search_fields = Page.search_fields + [
        index.SearchField('intro'),
        index.SearchField('body'),
    ]

    content_panels = Page.content_panels + [
        FieldPanel('date'),
        FieldPanel('intro'),
        FieldPanel('body', classname="full"),
    ]

    def __init__(self, *args, **kwargs):
        super(BlogPage, self).__init__(*args, **kwargs)
        self._meta.get_field('title').verbose_name = 'Titre de l'article'