我需要在默认情况下禁用wagtail DateField,但如果内容作者选中了一个框( wagtail BooleanField),那么该字段应该是启用的,并且是必需的。我正在努力寻找解决这个问题的最好方法,我还没有找到关于如何做到这一点的文档。我在考虑使用Django信号或wagtail钩子,但对于我认为应该是常见用例的情况,这似乎是一个复杂的解决方案。所以我想知道是否有人有更好的选择或者给我指出正确的方向。
发布于 2018-09-25 04:45:25
我不相信这在目前的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为空时,您就可以保存页面(作为表单)。
https://stackoverflow.com/questions/52486718
复制相似问题