English 中文(简体)
在使用自动发现的同时,在Django中定制管理员表单
原标题:
  • 时间:2009-01-23 01:38:17
  •  标签:

我想修改 Django 内置的 django.contrib.auth 模块的一些微小细节。具体来说,我想要一个不同的表单,使用户名成为一个电子邮件字段(并将电子邮件作为备用电子邮件地址。(我不想修改 auth 除必要之外的任何内容 - 一个简单的表单更改似乎是需要的。)

当我在使用自定义的ModelAdminauth进行autodiscover时,我最终与auth的自己的管理员界面发生冲突,并且出现了"已经注册"错误。

看起来我必须创建自己的管理站点,枚举我所有的模型。只有18个类,但它似乎是DRY问题--每个更改都需要添加到模型添加到定制的管理站点。

或者,我应该编写自己的“自动发现带排除项”版本,基本上导入所有admin模块,除了 auth

最佳回答

以上都不需要。只需使用admin.site.unregister()。以下是我最近在管理界面上添加了对is_active用户进行筛选的方法(请注意,is_active筛选现在已经默认在Django核心的用户模型中实现了;这里仅作为示例,仍然有效):

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)
问题回答

我认为使用自定义身份验证后端可能更容易做到这一点,从而消除了对定制模型管理的需求。

I did something similar with this snippet: http://www.djangosnippets.org/snippets/74/





相关问题
热门标签