Django Admin:需要有条件地显示字段

时间:2011-01-13 23:49:04

标签: django django-admin

根据其他字段的值有条件地在管理中显示字段的最佳方法是什么?

特别是我在考虑add_form和change_form。每当选择某个选项时,我都想隐藏或禁用某些字段。

我认为这可能需要一个javascript解决方案,但我想知道是否有更好的(即内置)方法来执行此操作。

3 个答案:

答案 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和复杂的表单验证,从而获得技术债务。