django 按需显示管理字段

Posted

技术标签:

【中文标题】django 按需显示管理字段【英文标题】:django show admin field on demand 【发布时间】:2013-12-13 04:04:16 【问题描述】:

我想在 django 管理界面中按需隐藏字段,这意味着并非所有参数都是必需的。这只是为了我的软件客户的可用性。

如果某些条件成立,例如类型字段应该完全隐藏。

条件不成立:

条件(使用我当前的代码):

隐藏是可能的,但仍有“剩菜”。是否可以在没有此类剩余物的情况下完整隐藏“类型行”?比如什么时候

class Meta:
    exclude = ["type"]

设置好了吗? (这不可能在运行时修改)

到目前为止,我的代码按需隐藏管理字段:

class SubItemForm(ModelForm):

    def __init__(self, *args, **kwargs):
        super(SubItemForm, self).__init__(*args, **kwargs)
        if self.instance.type == "SOME CONDITION":
            self.fields["type"].widget = CompleteHidden()
            self.fields["type"].label = ""

    class Meta:
        model = SubItem

【问题讨论】:

有效吗?你的问题是什么?您也可以完全从 dict (self.fields.pop("type")) 中删除该字段。 这很遗憾地引发了“在表单中找不到键'类型'”。我的(不优雅的)后备选项是使用 javascript 隐藏相关字段。 【参考方案1】:

将 editable=False 添加到要在模型类中隐藏的字段。

例如

to_hide = models.TextField(editable=False)

希望对你有帮助。

【讨论】:

我可以在运行时执行此操作吗?在每个实例上分开?

以上是关于django 按需显示管理字段的主要内容,如果未能解决你的问题,请参考以下文章

根据另一个字段中的选择显示/隐藏 django 管理表单字段

Django 管理员不会显示字段

在 django 中单击管理员的选择字段后如何隐藏或显示模型字段

如果在下拉列表中选择了特定值,则 Django 管理员显示/隐藏字段

如何在字段集中显示Django管理员内联模型?

Django 自定义用户创建未在管理站点中显示自定义字段