Как перейти от 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