默认情况下,我需要禁用wagtail DateField,但是如果内容作者选中一个框(wagtail BooleanField),则应启用该字段,并且该字段必填。我正在努力寻找解决此问题的最佳方法,但我还没有找到有关如何执行此操作的文档。我当时正在考虑使用Django信号或w钩,但对于我认为应该是普通用例的情况,这似乎是一个复杂的解决方案。所以我想知道是否有人有更好的选择或将我指向正确的方向。
答案 0 :(得分:2)
我认为目前在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
为空时可以保存页面(作为表单)。