假设我有一个很棒的 Wagtail 项目。在这个项目中,我想要一个可以添加无限页面作为链接的页面,代码如下所示:
pages = StreamField([
('link_page', blocks.PageChooserBlock(help_text='Link page')),
])
如您所见,我有这个带有 PageChooserBlock 的 StreamField 可以添加。
我的模板看起来像这样:
{% 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',
)