我需要默认禁用 wagtail DateField,但如果内容作者选中一个框(wagtail BooleanField),则应启用该字段并且该字段是必需的。我正在努力寻找解决此问题的最佳方法,我还没有找到有关如何执行此操作的文档。我正在考虑使用 Django 信号或 wagtail 钩子(Hook),但对于我认为应该是常见用例的情况来说,它似乎确实是一个复杂的解决方案。所以我想知道是否有人有更好的选择或为我指出正确的方向。
最佳答案
我认为目前在 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 事件来检测 bool 字段是否被选中,然后找到并选择 DateField 并禁用或隐藏它。
正如 Willem Van Onsem 所提到的,您需要将 DateField
设置为空且为空,以便在 DateField
为空时可以保存页面(作为表单)。空的。
关于python - 当 wagtail BooleanField 为 true 时启用 wagtail DateField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52486718/