Django Admin 根据其他选择动态禁用字段
Posted
技术标签:
【中文标题】Django Admin 根据其他选择动态禁用字段【英文标题】:Django Admin disable field dynamically based on other selections 【发布时间】:2012-03-08 23:26:53 【问题描述】:我已经构建了一个 django 模型,其中必填字段会根据用户对其他先前字段的选择而改变。具体来说,它是一个事件调度应用程序,其中选项会根据用户做出的选择而变化。
某些字段组合根本无效,我将模型设置为检查这些组合并且不允许它们。但是,在 UI 中找出正确的组合有点令人困惑。我希望管理 UI 通过在用户更改其他字段时隐藏或禁用无效字段来帮助解决此问题。
例如,如果用户选择让事件每周重复一次,我需要禁用(或最好删除)所有每日和每月字段,只显示每周字段,例如星期几。
此外,如果他们返回并将其更改为每天,则显示或启用的字段需要更改以反映该选择。
我将如何设置管理表单以便发生这种情况?我知道这可以通过 DOM 和 javascript 实现,但我正在尝试确定 Django 中是否有这种机制。我一直在搜索 Django 文档,但似乎找不到。
有没有人举例说明你是如何做类似事情的?
【问题讨论】:
在 Django 中没有“机制”。 JavaScript 是您唯一的选择。使用 JavaScript 有什么问题? 【参考方案1】:没有内置解决方案。
简单的解决方案是将自定义 JavaScript 代码添加到您的管理员。请参阅reference here。只需将 js 和 css 文件添加到 Admin 类并在您的自定义 js 中编写表单。
class ReportAdmin(admin.ModelAdmin):
class Media:
js = (
'frontend/js/jquery-1.6.1.min.js',
'frontend/js/jquery-ui.min.js',
'frontend/js/custom_js.js',
)
【讨论】:
还需要更新模型的clean方法,否则用户修改或关闭javascript可能会提交无效数据。以上是关于Django Admin 根据其他选择动态禁用字段的主要内容,如果未能解决你的问题,请参考以下文章
如何根据 django admin 中的另一个选择字段限制选择字段选项