You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

组创建页面权限显示优化:仅展示Codename,隐藏应用与模型名称

实现Django组权限选择框仅显示Codename(前端方案)

移除应用名称和模型名称,选择时仅显示最后一项

需求:在组创建页面选择权限时,移除app name和model name,仅显示最后一部分(即codename);展示权限时保留app name和content type,仅通过前端调整实现仅显示codename的效果。

解决方案

方法1:JavaScript动态修改选项文本

通过JS遍历权限下拉框的选项,提取并替换为codename,同时保留原始文本(可选),不影响后台数据提交。

  1. 编写自定义JS脚本(保存到static/js/custom_permission_display.js):
document.addEventListener('DOMContentLoaded', function() {
    const permissionSelect = document.getElementById('id_permissions');
    if (!permissionSelect) return;

    Array.from(permissionSelect.options).forEach(option => {
        // 适配Django默认权限文本格式:"应用名 | 模型名 | 权限codename"
        const textParts = option.text.split(' | ');
        if (textParts.length === 3) {
            // 存储原始文本到自定义属性,方便后续需要恢复展示
            option.dataset.originalText = option.text;
            // 仅显示最后一段codename
            option.text = textParts[2];
        }
    });
});
  1. 在Django Admin中引入该脚本:
    修改admin.py,自定义Group的Admin类并添加媒体资源:
from django.contrib import admin
from django.contrib.auth.models import Group

class CustomGroupAdmin(admin.ModelAdmin):
    class Media:
        js = ('js/custom_permission_display.js',)

# 替换默认的Group管理类
admin.site.unregister(Group)
admin.site.register(Group, CustomGroupAdmin)

方法2:CSS截断显示(仅格式固定时推荐)

如果权限文本格式固定,可通过CSS仅显示最后部分,兼容性略差:

#id_permissions option {
    direction: rtl;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: clip;
    max-width: 180px;
}

将上述CSS添加到Admin的自定义样式文件中即可。

注意事项

  • 仅修改前端显示,权限的实际提交值(权限ID)不受影响,不改变后台逻辑。
  • 若Django Admin的权限文本格式变更,需对应调整JS的分割逻辑。

内容的提问来源于stack exchange,提问作者sanjog regmi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 14:33:15