最好的方式是根据其他字段的值有条件地在管理界面中显示一个字段。
特别是考虑到添加表单和更改表单。每当选择某个选项时,我想隐藏或禁用某些字段。
我认为这可能需要一个 JavaScript 解决方案,但我想知道是否有更好的(即内置的)方法来实现此目的。
最好的方式是根据其他字段的值有条件地在管理界面中显示一个字段。
特别是考虑到添加表单和更改表单。每当选择某个选项时,我想隐藏或禁用某些字段。
我认为这可能需要一个 JavaScript 解决方案,但我想知道是否有更好的(即内置的)方法来实现此目的。
伯恩哈德是对的。您可能能够黑掉管理视图和模板,以有条件地显示/不显示字段小部件,但如果您想在管理工具中根据用户行为动态执行此操作,则将使用JavaScript。
尽管如此,这并不可怕。至少Django管理模板具有特定于模型和实例的ID,使您可以对显示/隐藏行为进行细粒度控制。
我认为你应该能够创建自己的ModelForm并指定管理员使用它(https://docs.djangoproject.com/en/1.7/ref/contrib/admin/#django.contrib.admin.ModelAdmin.form)。
使用表单的_init__()方法有选择地显示字段。
如果这个想法可行,我会尝试并更新这个答案。
(实际上重新阅读问题,这取决于情况。如果“其他字段的值”在页面加载之前设置,这个想法应该可以。如果你想要即时响应——点击一个字段,另一个出现/消失,那么你需要JavaScript)。