从Django-admin中移除默认应用

69 投票
6 回答
33900 浏览
提问于 2025-04-15 19:46

在Django的后台管理系统中,默认会有用户、用户组和站点这几个功能模块。那我该怎么去掉用户组和站点呢?

我试着把 admin.autodiscover() 这一行从根目录的URL中去掉。结果当我在我的应用模型中添加类似 admin.site.register(User, UserAdmin) 的代码时,出现了一个 AlreadyRegistered 的错误(这其实是正常的,因为用户模型已经在django.contrib.auth中注册过了)。

6 个回答

8

为了去掉用户和组的功能,我在admin.py文件里做了以下操作:

from django.contrib import admin
# Need to import this since auth models get registered on import.
import django.contrib.auth.admin
import django.contrib.auth.models
from django.contrib import auth

admin.site.unregister(auth.models.User)
admin.site.unregister(auth.models.Group)
12

除了上面提到的,记得再检查一下“settings.py”文件里“INSTALLED_APPS”的顺序。

INSTALLED_APPS = [
    # django apps first
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    # custom apps below
    'my_app'
]

否则会导致错误。可以查看这里了解更多信息:关于Django管理后台注册内联用户资料管理的问题

122

在一个你确定会被加载的admin.py文件中,可以尝试这样做:

admin.site.unregister(User)
admin.site.unregister(Group)
admin.site.unregister(Site)

撰写回答