首页 > 解决方案 > 如何限制 wagtail.documents.blocks.DocumentChooserBlock 的文件类型?

问题描述

所以我想限制管理员可以选择使用wagtail.documents.blocks.DocumentChooserBlock. 我似乎在任何地方都找不到任何文档。这是我找到的最多的http://docs.wagtail.io/en/v2.0/topics/streamfield.html#documentchooserblock

我查看了代码以查看它们是否可能呈现输入字段。但它是一个按钮。

<button type="button" class="button action-choose button-small button-secondary">Choose a document</button>

这将打开一个选择器模型,该模型选择以前上传的文档或上传一个新文档。

我还寻找了选择器的模板文件。但我无法找到该输入的位置。覆盖选择器模板似乎需要做很多工作。

这里我添加了 DocumentChooserBlock。

class IndicatorWidgetsBlock(blocks.StreamBlock):
    flourish = blocks.StructBlock(
        [
            ('label', blocks.CharBlock(required=False,
                                       help_text="This widget's tab label on the indicator")),
            ('title', blocks.CharBlock(required=True)),
            ('hide_title', blocks.BooleanBlock(default=False, required=False)),
            ('html_file', DocumentChooserBlock(required=True)),
            ('sdg', blocks.ChoiceBlock(required=False, choices=sdg_choices,
                                       label='SDG Goal')),
            ('source', blocks.RichTextBlock(
                features=['link'], required=False)),
        ],
        icon='code',
        template='takwimu/_includes/dataview/code.html'
    )
    class Meta:
        icon = 'form'

我想限制上传文件的类型。

标签: djangowagtail

解决方案


我会尝试在 .save() 方法期间引发验证错误。这将允许您阻止该操作并重定向用户以选择正确的文件格式。


推荐阅读