首页 > 解决方案 > 当 wagtail BooleanField 为 true 时启用 wagtail DateField

问题描述

我需要默认禁用 wagtail DateField,但如果内容作者选中一个框(a wagtail BooleanField),则应启用并要求该字段。我正在努力寻找解决此问题的最佳方法,我还没有找到有关如何执行此操作的文档。我正在考虑使用 Django 信号或 wagtail 钩子,但对于我认为应该是常见用例的情况,它似乎确实是一个复杂的解决方案。所以我想知道是否有人有更好的选择或指出我正确的方向。

标签: pythondjangowagtail

解决方案


我不相信目前在 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


推荐阅读