Django allauth以管理员身份而非默认用户

时间:2018-08-10 17:32:06

标签: django django-allauth

我正在使用Django 2,并且已经使用django-allauth插件实现了用户身份验证。

从前端来看,它工作正常,但是用户将由超级用户创建,因此我也需要在管理面板中进行相同的集成。

到目前为止,Django-admin的默认用户模型具有usernamepassword字段,但根据django-allauth,我使用的是唯一的电子邮件,因此我希望用户注册字段。

  1. 名字
  2. 姓氏
  3. 电子邮件
  4. 密码

在管理面板中无法理解如何实现django-allauth

  

编辑2

在管理面板中添加用户页面

enter image description here

如何删除username字段并添加emailfirst_namelast_name字段?

1 个答案:

答案 0 :(得分:0)

您可以将标准用户创建和更改表单子类化,添加自己的字段和/或验证,然后在自定义用户管理员中使用这些字段。假设您的用户模型称为用户,下面是一个示例(Django 2.1.5,Python 3.6):

from django.contrib.auth.forms import UserCreationForm

class CustomUserCreationForm(UserCreationForm):

    class Meta(UserCreationForm):
        model = User
        fields = '__all__'

    email = forms.CharField(widget=forms.EmailInput())

class CustomUserAdmin(UserAdmin):
    model = User
    add_form = CustomUserCreationForm
    add_fieldsets = UserAdmin.add_fieldsets + (
            (None, {'fields': ('email')}),
    )


admin.site.register(User, CustomUserAdmin)

您可以使用UserChangeForm进行类似的自定义,但是请注意,在管理员中,需要使用以下命令进行覆盖:

form = CustomUserChangeForm
fieldsets = UserAdmin.fieldsets + ((None, {'fields': ()}),
    )