编程删除Wagtail ListBlock项目

2024-04-27 07:46:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个抽象类,它为Wagtail定义了一个StreamField

class DownloadGroupItem(models.Model):

    class Meta:
        abstract = True

    downloads = StreamField([
        ('items', ListBlock(
            StructBlock(
                [
                    ('title', CharBlock()),
                    ('description', TextBlock()),
                    ('file', DocumentChooserBlock()),
                ],
                template='downloads/blocks/item.html',
                form_classname='downloads__itemlist struct-block'
            ),
            label='Add download'
        ))
    ])

如果通过DocumentChooserBlock保存的file从页面外部删除,这将使ListBlock项无法在模板中输出。如果发生这种情况,当前的行为是将StructBlock留给file一个空值(尽管是必需的)。你知道吗

我可以通过为Wagtail文档模型添加一个接收者并监听models.signals.post_delete来减轻这种情况,但是如何以编程方式删除受影响的Wagtail ListBlock项呢?你知道吗


Tags: model定义modelsdownloads情况抽象类metaclass