当前位置:  开发笔记 > 编程语言 > 正文

在Django中自定义管理表单,同时还使用自动发现

如何解决《在Django中自定义管理表单,同时还使用自动发现》经验,为你挑选了1个好方法。

我想修改Django内置django.contrib.auth模块的一些细节.具体来说,我想要一个不同的表单,使用户名成为一个电子邮件字段(并通过电子邮件发送一个备用电子邮件地址.(我不想修改auth任何超过必要的内容 - 简单的表单更改似乎就是所需要的.)

当我使用autodiscover自定义的时候ModelAdmin,auth我最终会与auth自己的管理界面冲突,并获得"已经注册"的错误.

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

或者,我应该编写自己的" autodiscoverwith exclusions" 版本来基本导入所有admin模块,除了 auth



1> Carl Meyer..:

以上都不是.只需使用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)


我注意到,在将此unregister()调用添加到我的代码后,我不得不手动杀死并重新启动我的开发服务器,然后Django"看到"我所做的更改.这让我浪费了15分钟试图弄清楚为什么unregister()不起作用.这终于把我带到了这个Stack Overflow问题,在那里我发现我正在做的事情*应该起作用.:-)
推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有