Django Admin根据其他选择动态禁用字段

时间:2012-02-17 14:53:24

标签: javascript python django django-admin

我已经构建了一个django模型,其中必需的字段根据用户在其他先前字段上的选择而变化。具体来说,它是一个事件调度应用程序,其中选项根据用户的选择而变化。

某些字段组合根本无效,我将模型设置为检查那些并且不允许它们。但是,在UI中找出正确的组合有点令人困惑。我希望管理员用户界面通过在用户更改其他字段时隐藏或禁用无效字段来帮助解决此问题。

例如,如果用户选择每周重复一次事件,我需要禁用(或理想地删除)所有每日和每月字段,并仅显示每周字段,例如星期几。

此外,如果他们返回并将其更改为每日,则显示或启用的字段需要更改以反映该选择。

我如何设置管理表单以便发生这种情况?我知道这可以通过DOM和javascript来实现,但我正在尝试确定是否有一种内置于Django的机制。我一直在搜索Django文档,但我似乎无法找到它。

有没有人举例说明你是如何做过类似事情的?

1 个答案:

答案 0 :(得分:3)

解决方案中没有构建。

简单的解决方案是向管理员添加自定义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',
        )