La columna clean_name no existe (Wagtail 2.10)

Aug 19 2020

Acabo de actualizar Wagtail 2.9.3 a 2.10 y descubrí que mis FormPages ya no funcionan debido a que falta un clean_namecampo. Leí la documentación sobre este nuevo cambio, pero no sé cómo solucionarlo.

Después de la actualización, intenté ejecutar mi servidor local, pero me dijeron que necesitaba ejecutar migraciones, lo cual hice. ¿Cómo puedo agregar la columna clean_name a mi campo? ¿Simplemente agrego la columna a mi clase FormField a continuación, como lo haría normalmente?

A continuación se muestra el seguimiento de la pila y los modelos relevantes.

ProgrammingError at /support-us/volunteer/
column core_formfield.clean_name does not exist
LINE 1: ...e_formfield"."id", "core_formfield"."sort_order", "core_form...
class FormField(AbstractFormField):
    page = ParentalKey(
        'FormPage',
        on_delete=models.CASCADE,
        related_name='form_fields',
    )

class FormPage(MetadataPageMixin, AbstractEmailForm):

    body = StreamField(BaseStreamBlock())
    confirmation_text = RichTextField(blank=True)

    content_panels = AbstractEmailForm.content_panels + [
        StreamFieldPanel('body'),
        InlinePanel('form_fields', label='Form Fields'),
        FieldPanel('confirmation_text'),
        MultiFieldPanel([
            FieldRowPanel([
                FieldPanel('from_address', classname="col6"),
                FieldPanel('to_address', classname="col6"),
            ]),
            FieldPanel("subject"),
        ], heading="Email Settings"),
    ]

    class Meta:
        verbose_name = 'Form Page'
        verbose_name_plural = 'Form Pages'

Respuestas

2 gasman Aug 19 2020 at 15:18

Ejecutar ./manage.py makemigrationsy ./manage.py migratedespués de la actualización debería ser suficiente. No se requieren cambios en su código: el nuevo clean_namecampo se define como parte de AbstractFormField, por lo que no es necesario agregarlo a su propia definición de Formfield.