Как перейти от StaticBlock к StructBlock?

Мне нужно изменить уже существующий StaticBlock на StructBlock:

class SomeBlock(blocks.StaticBlock):
    pass

    class Meta:
        ...

to:

class SomeBlock(blocks.StructBlock):
    ...

    class Meta:
        ...

Однако, если страница трясогузки уже SomeBlock настроена, я получаю ошибку:

NoneType is not iterable

Поскольку у меня нет ничего внутри StaticBlock. Мне нужно написать пользовательскую миграцию данных для этого.

В списке Schema Operations я не нашел способа изменить фактический тип блока. Как мне к этому подойти?

Блоки StructBlocks и StaticBlocks живут внутри StreamFields, поэтому для преобразования блоков внутри StreamField необходим метод, специфичный для Wagtail. Пожалуйста, смотрите https://wagtail.org/blog/google-summer-of-code-toolkit-for-streamfield-data-migrations-in-wagtail/ для обсуждения этого вопроса. Затем вы можете использовать проект, описанный https://github.com/wagtail/wagtail-streamfield-migration-toolkit Или, если вы хотите опробовать Wagtail 4.2rc1, вы можете попробовать встроенные помощники миграции: https://docs.wagtail.org/en/latest/advanced_topics/streamfield_migrations.html#streamfield-data-migrations

Вернуться на верх