我想修改Django内置django.contrib.auth
模块的一些细节.具体来说,我想要一个不同的表单,使用户名成为一个电子邮件字段(并通过电子邮件发送一个备用电子邮件地址.(我不想修改auth
任何超过必要的内容 - 简单的表单更改似乎就是所需要的.)
当我使用autodiscover
自定义的时候ModelAdmin
,auth
我最终会与auth
自己的管理界面冲突,并获得"已经注册"的错误.
看起来我必须创建自己的管理站点,枚举我的所有模型.它只有18个类,但它似乎是一个干燥问题 - 每个更改都需要添加到模型并添加到自定义管理站点.
或者,我应该编写自己的" autodiscover
with exclusions" 版本来基本导入所有admin
模块,除了 auth
?
以上都不是.只需使用admin.site.unregister().这是我最近在管理员中添加过滤用户is_active的方法(默认情况下,nb is_active过滤现在在用户模型中在Django核心中;在这里仍然可以作为示例),所有DRY都可以是:
from django.contrib import admin from django.contrib.auth.admin import UserAdmin from django.contrib.auth.models import User class MyUserAdmin(UserAdmin): list_filter = UserAdmin.list_filter + ('is_active',) admin.site.unregister(User) admin.site.register(User, MyUserAdmin)