【问题标题】:How to conditionally show fields in django admin if there is a value?如果有值,如何有条件地显示 django admin 中的字段?
【发布时间】:2017-03-13 20:11:58
【问题描述】:

在 admin.py 文件中我有一个

 fields = ('name', 'description', ('created_by','created', ),('updated_by', 'updated'))

如果非空白,我怎样才能只显示 created, created_by。 当我要创建新记录时,created_by、created、updated_by 和 updated 是空白的,我不需要显示它们。

只有当我保存记录时,我才喜欢在 django admin 中显示这些字段。

【问题讨论】:

    标签: django-models django-admin


    【解决方案1】:

    尝试通过 get_fields 方法动态设置字段。像这样:

    class MyAdmin(ModelAdmin):
        def get_fields(self, request, obj=None):
            if obj is None:
                return ('name', 'description')
            return ('name', 'description', ('created_by','created', ),('updated_by', 'updated'))
    

    https://docs.djangoproject.com/en/3.2/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_fields

    【讨论】:

    • 我必须将 self 添加到您提供的上述代码中。 def get_fields(self, request, obj=None),否则会给我一个错误。但很好的答案。解决了这个问题。
    猜你喜欢
    • 2018-12-02
    • 1970-01-01
    • 2010-09-13
    • 2021-09-18
    • 2012-01-03
    • 2019-08-27
    • 2017-06-08
    • 2020-02-14
    • 1970-01-01
    相关资源
    最近更新 更多