Допустим, у меня есть потрясающий проект Wagtail.В этом проекте мне нужна страница, на которой я могу добавить неограниченное количество страниц в виде ссылок, код будет выглядеть следующим образом:
pages = StreamField([
('link_page', blocks.PageChooserBlock(help_text='Link page')),
])
Как вы видите, у меня есть StreamField с PageChooserBlock, который я могу добавить.
Мой шаблон выглядел бы так:
{% for block in page.pages %}
<a href='{% pageurl block.value %}'>{{ block.value.specific.title }}</a>
{% endfor %}
Но что происходит сейчас, если кто-то удалит одну из "связанных" страниц.Они будут удалены из поля потока страниц или, по крайней мере.Поле потока будет показано, но пусто.
Есть ли способ добавить on_delete=PROTECT
на PageChooserBlock
?вот так:
pages = StreamField([
('link_page', blocks.PageChooserBlock(help_text='Link page', on_delete=blocks.PROTECT)),
])
Если кто-то попытается удалить страницу сейчас, он получит ошибку нарушения.
например, отлично работает на ForeignKey:
page = models.ForeignKey(
'wagtailcore.Page',
null=True,
blank=True,
on_delete=models.PROTECT,
related_name='',
help_text= 'Page',
)