根据其他字段的值有条件地在管理中显示字段的最佳方法是什么?
特别是我在考虑add_form和change_form。每当选择某个选项时,我都想隐藏或禁用某些字段。
我认为这可能需要一个javascript解决方案,但我想知道是否有更好的(即内置)方法来执行此操作。
答案 0 :(得分:1)
Bernhard是对的。您可能能够破解管理视图和模板以有条件地显示/不显示字段的小部件,但如果您想根据管理员中的用户行为动态地执行此操作,则您将使用javascript。
但是,这并不是那么可怕。至少Django管理模板具有模型和特定于实例的ID,可以精确控制您的显示/隐藏行为。答案 1 :(得分:0)
我认为你应该能够创建自己的ModelForm并指定管理员使用它(https://docs.djangoproject.com/en/1.7/ref/contrib/admin/#django.contrib.admin.ModelAdmin.form)。
使用表单的_init __()方法有选择地显示字段。
如果有效的话,我会试一试并更新这个答案。
(实际上重读这个问题,取决于。如果"其他字段的值"在页面加载之前设置,这个想法应该有用。如果你想要一个即时响应 - 点击一个字段和另一个出现/消失,是的,你需要JavaScript)。
答案 2 :(得分:0)
我的回答可能听起来很深奥 - 但我怀疑你可能会采取的设计方向可以从一些重新考虑中受益。当一个接口需要很多TLC来使用AJAX来制作出色的UX时,我倾向于不使用Admin接口。
我个人对Django管理界面的看法是,它是一个很棒的免费赠品,它给我一个基本级别的即时CRUD视图。对于那些需要更友好用户界面的人(即使其中一些用户正在处理管理功能),我也不会为它提供支持。您将尝试使用Admin界面执行这些类型的Ajax UI / UX和复杂的表单验证,从而获得技术债务。