【问题标题】:How to add email in Django amin Add user Page如何在 Django 管理员中添加电子邮件添加用户页面
【发布时间】:2021-01-14 10:06:20
【问题描述】:

我创建了一个 CustomUser(AbstractUser) 模型,在这个模型中我想在管理员添加用户页面中添加电子邮件 ID 字段。目前默认情况下,首先我们可以输入用户名和密码,在创建用户名和密码后,我们将被重定向到另一个电子邮件字段可用的页面我希望添加用户页面上的此电子邮件字段可以吗?

【问题讨论】:

    标签: django django-admin


    【解决方案1】:

    在管理员 django 上已经有一个 BaseUserAdmin 这是默认的,它有 2 个部分,添加表单和更改表单,这两个表单都是从字段集(更改表单)和 add_fieldsets(添加表单)创建的 要在添加表单上添加字段或删除字段,请覆盖 BaseUserAdmin add_fieldsets:

    from django.contrib.auth.admin import UserAdmin
    
    class CustomUserAdmin(UserAdmin):
    
        add_fieldsets = UserAdmin.add_fieldsets + (
            (None, {'fields': ('email',)}),
        )
    

    如果您使用的是自定义 ModelAdmin,它是 django.contrib.auth.admin.UserAdmin,那么你需要添加你的自定义 字段到字段集(用于编辑用户的字段)和 add_fieldsets(用于创建用户时使用的字段)

    第二种方法:覆盖 add_fieldsets 属性本身:

    class CustomUserAdmin(UserAdmin):
        
        # add_fieldsets is not a standard ModelAdmin attribute. UserAdmin
        # overrides get_fieldsets to use this attribute when creating a user.
        add_fieldsets = (
            (None, {
                'classes': ('wide',),
                'fields': ('username', 'email', 'password1', 'password2'),
            }),
        )
    

    文档:https://docs.djangoproject.com/en/3.1/topics/auth/customizing/#custom-users-and-django-contrib-admin

    【讨论】:

    • 嗨@linhNguyen 感谢您的回答,但我如何覆盖管理代码下方。 class 'CustomUserAdmin(UserAdmin): add_form = CustomUserCreationForm form = CustomUserChangeForm model = CustomUser list_display = ('username',)'
    • @charanjeetsingh 我已经更新了我的答案以获得更简单的解决方案
    • 获取此错误 FieldError at /admin/practice/customuser/add/ 为 CustomUser 指定的未知字段(e、m、i、l、a)。检查 CustomUserAdmin 类的字段/字段集/排除属性。
    • @charanjeetsingh 可能是我打错字了,我再次更新了答案
    • 非常感谢@linhNguyen,它现在工作得很好
    【解决方案2】:

    在您应用的admin.py 中,创建ModelAdmin 并使用fields 属性将电子邮件字段包含在视图中。

    示例:

    from django.contrib import admin
    from myproject.myapp.models import CustomUser
    
    class CustomUserAdmin(admin.ModelAdmin):
        fields = ('username', 'password', 'email')
    
    admin.site.register(CustomUser,CustomUserAdmin)
    

    【讨论】:

      猜你喜欢
      • 2021-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-29
      • 2013-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多