Wagtail 管理中的只读字段

问题描述 投票:0回答:1

我们正在使用 Wagtail 4.1 并正在寻找一种方法使管理员中的某些字段不可编辑(只读)。

普通的 Django 技术,如在表单字段上设置

widget.attrs['readonly'] = True
,在 Wagtail 中对大多数字段类型不起作用。我认为这是因为 Wagtail 管理员用动态生成的 javascript 支持的字段替换了所有香草
<input>
元素,这些字段看起来很棒,但不尊重表单字段的“只读”属性或您可能对底层
 进行的任何其他更改<input>
.

据我所知,Wagtail 没有提供任何内置机制来将管理字段设置为只读。也许我需要编写自己的自定义 javascript 来覆盖 Wagtail 表单中的行为?

任何帮助将不胜感激。

django field admin wagtail readonly
1个回答
0
投票

此功能将在 Wagtail 5.1 中可用。但与此同时,您可能需要自己动手。

在我们知道这是出来之前我们所做的是使用自定义表单,然后在表单的初始化中,我们为每个需要只读的字段执行以下操作:

# CSS is in place to check for the readonly attribute and .editor-readonly class
# add readonly attribute for inputs
self.fields['title'].widget.attrs['readonly'] = 'readonly'

然后css是

form#page-edit-form {
  section.editor-readonly {
    input:read-only {
      background-color: #e9ecef;
      outline: none;
      pointer-events: none;
    }
  }
}

有了这个,字段仍然在表单中提交,但不能从浏览器中更改。如果您的用户比我们的用户更狡猾,您可能需要检查 clean 方法中的更改。 (我们需要将字段与表单一起提交,因为我们需要几个必填字段,例如 title 和 slug 是只读的。)

© www.soinside.com 2019 - 2024. All rights reserved.