【问题标题】:Enable wagtail DateField when a wagtail BooleanField is true当 wagtail BooleanField 为 true 时启用 wagtail DateField
【发布时间】:2018-09-25 04:45:24
【问题描述】:

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

【问题讨论】:

  • 你不应该在模型中禁用它(事实上你可以让DateField为空,并删除BooleanField,但是你需要在层中实现它(在JavaScript和在表单实现时)。

标签: python django wagtail


【解决方案1】:

我认为目前在 Wagtail 中这是不可能的(从 Wagtail 2.2 开始)。至少不是本地的。

不过,您可以使用如下 sn-p 向您的管理员添加自定义 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 为空时保存页面(作为表单)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    相关资源
    最近更新 更多