ไม่มีคอลัมน์ clean_name (Wagtail 2.10)

Aug 19 2020

ฉันเพิ่งอัปเกรดจาก Wagtail 2.9.3 เป็น 2.10 และพบว่า FormPages ของฉันไม่ทำงานอีกต่อไปเนื่องจากclean_nameฟิลด์หายไป ฉันอ่านเอกสารเกี่ยวกับการเปลี่ยนแปลงใหม่นี้ แต่ฉันรู้สึกแย่มากเกี่ยวกับวิธีการแก้ไข

หลังจากอัปเกรดฉันได้ลองเรียกใช้เซิร์ฟเวอร์ภายในของฉัน แต่ได้รับแจ้งว่าฉันจำเป็นต้องเรียกใช้การย้ายข้อมูลซึ่งฉันทำ ฉันจะเพิ่มคอลัมน์ clean_name ลงในฟิลด์ของฉันได้อย่างไร ฉันเพิ่งเพิ่มคอลัมน์ลงในคลาส FormField ของฉันด้านล่างเหมือนที่ฉันทำตามปกติหรือไม่

ด้านล่างนี้คือการติดตามสแต็กและโมเดลที่เกี่ยวข้อง

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'

คำตอบ

2 gasman Aug 19 2020 at 15:18

การรัน./manage.py makemigrationsและ./manage.py migrateหลังการอัพเกรดควรเพียงพอ ไม่จำเป็นต้องเปลี่ยนแปลงโค้ดของคุณ - clean_nameฟิลด์ใหม่ถูกกำหนดให้เป็นส่วนหนึ่งของAbstractFormFieldดังนั้นจึงไม่จำเป็นต้องเพิ่มเข้าไปในข้อกำหนด Formfield ของคุณเอง