【问题标题】:Change 'SuperUser' label and description in Django admin在 Django 管理员中更改“超级用户”标签和描述
【发布时间】:2014-09-07 03:23:57
【问题描述】:

我想在 Django admin 中更改 is_superuser 字段的标签和描述。

我已经看到了这个问题asked before,但这并不是我所需要的。

我想要的是将“超级用户状态”字符串更改为其他内容,并更改此字符串“指定此用户拥有所有权限而无需明确分配它们。 '

因为这是 Django 定义的 User 类,我不确定 'verbose_name' 会有所帮助。或者至少我不知道在那种情况下该怎么做。

希望大家帮忙。

感谢阅读。

【问题讨论】:

    标签: django admin


    【解决方案1】:

    肮脏的方式:

    如果您使用虚拟环境,您可以直接在虚拟环境中的 django 文件夹中更改相关的 .po& .mo 文件。但是,您必须至少在需求文件中锁定 django 版本以防止覆盖。

    【讨论】:

      【解决方案2】:

      这可以通过在 django 的 UserAdmin 的自定义子类上覆盖 get_form() 来完成,如下所示:

      # admin.py
      from django.contrib import admin
      from django.contrib.auth.admin import UserAdmin
      
      class MyUserAdmin(UserAdmin):
          def get_form(self, request, obj, **kwargs):
              form = super(MyUserAdmin, self).get_form(request, obj, **kwargs)
              form.base_fields['is_superuser'].label = 'My label'
              form.base_fields['is_superuser'].help_text = 'My help text'
              return form
      
      # NOTE: You may need to unregister the existing UserAdmin 
      # before registering this custom one
      admin.site.register(User, MyUserAdmin)
      

      请注意,get_form() 返回的表单没有fields 属性,这就是您访问base_fields 的原因。对于像 labelhelp_text 这样微小的更改,修改 base_fields 就像 Douglas Adams 所说的那样,基本上是无害的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-02
        • 1970-01-01
        相关资源
        最近更新 更多