python - 当 wagtail BooleanField 为 true 时启用 wagtail DateField
问题描述
我需要默认禁用 wagtail DateField,但如果内容作者选中一个框(a wagtail BooleanField),则应启用并要求该字段。我正在努力寻找解决此问题的最佳方法,我还没有找到有关如何执行此操作的文档。我正在考虑使用 Django 信号或 wagtail 钩子,但对于我认为应该是常见用例的情况,它似乎确实是一个复杂的解决方案。所以我想知道是否有人有更好的选择或指出我正确的方向。
解决方案
我不相信目前在 Wagtail 中这是可能的(从 Wagtail 2.2 开始)。至少不是本地的。
但是,您可以使用如下代码段向您的管理员添加自定义 JavaScript:
from django.contrib.staticfiles.templatetags.staticfiles import static
from django.utils.html import format_html
from wagtail.core import hooks
@hooks.register("insert_global_admin_js", order=100)
def global_admin_js():
"""Add custom.js to Wagtail Admin."""
return format_html('<script src="{}"></script>', static("js/custom.js"))
然后在您的custom.js
文件中,您可以添加一个 JavaScript 事件来检测布尔字段何时被选中,然后找到并选择 DateField 并禁用或隐藏它。
正如 Willem Van Onsem 所提到的,您需要将其设为DateField
可空和空白,以便您可以在为空时保存页面(作为表单)DateField
。
推荐阅读
- javascript - 字符串变得不可变,我什至不能从中删除空格或修改它
- rust - 可变地借用结构字段并将其传递给可变方法
- c# - 如何在C#中延迟执行任务中的部分代码
- java - 如何使用流程构建器使用其本机 gui 执行命令
- java - 如何使用@Procedure 注释在 Spring JPA 中映射 VARCHAR2 类型表?
- javascript - 如何控制音频播放图标而不是全部循环播放?
- nginx - NGINX 入口控制器、SSL 和 optional_no_ca
- python - 无法导入已安装的包
- python - API 更新项目的最佳方法
- reactjs - 如何在 div 中使用 Material UI 主题颜色?