Как удалить поле из StreamBlock, сохраняя совместимость с существующими записями в Wagtail - PullRequest
0 голосов
/ 30 апреля 2020

Итак, один из участников моего StreamBlock - RichTextField. Я создал новый StructBlock, содержащий некоторые дополнительные атрибуты для замены / улучшения этого члена.

old:

class MyStreamBlock(StreamBlock):
    ...
    text = RichTextBlock()
    ...

new:

class MyRTFBlock(StructBlock):
    attr1: SomeBlock()
    text: RichTextBlock()

class MyStreamBlock(StreamBlock):
    ...
    text = MyRTFBlock()
    ...

Естественно, новый блок не найдет существующий контент, потому что теперь он вкладывает текст на один уровень глубже. Поэтому я сохранил старое определение поля и добавил новое поле в StreamBlock следующим образом:

class MyStreamBlock(StreamBlock):
    ...
    text = RichTextBlock()
    new_text = MyRTFBlock()
    ...

Но .... Теперь у меня остается два текстовых поля для выбора при добавлении нового раздела в StreamField.

Есть ли способ, которым я мог бы достичь того, что я хочу, либо путем миграции, либо удалив кнопку «Добавить старый текст» из панели редактора StreamField?

...