在Django管理界面中保存用户时,无法更改用户名验证的方式

时间:2018-10-10 07:39:50

标签: django django-admin django-authentication django-allauth django-validation

(我正在使用 allauth 在我的djando应用程序中处理用户身份验证)

出于多种原因,我需要修改用户注册时以及在管理员界面中对其进行修改时用户名的验证方式。

我已经在settings.py

中使用 ACCOUNT_USERNAME_VALIDATORS = []来覆盖allauth用户名验证程序

当用户通过注册表单进行注册时,此方法很好用。

问题是,当我尝试在Django管理界面中更改用户信息时,无法保存无法使用内置用户名验证器验证的用户。

error message when trying to update users that contain spaces or special characters

我还尝试过更改 clean_username 功能在适配器中的工作方式。 py ,但仍然无法正常工作。

通过管理界面保存/更新用户时,如何覆盖或更改用户名的验证方式?

这是我的 admin.py

class UserAdmin(BaseUserAdmin):
    inlines = [PerfilInline]
    list_display = ( 'equipo', 'usuario1', 'usuario2', 'plataforma', 'email', 'comentario', 'ver', 'prekills', 'postkills')

    def ver(self, obj):
        return obj.perfil.VERIFICACION_2
    ver.boolean = True
    def equipo(self, obj):
        return obj.perfil.equipo
    def prekills(self, obj):
        return obj.perfil.prekills_1
    def postkills(self, obj):
        return obj.perfil.postkills_1
    def usuario2(self, obj):
        return obj.first_name
    def usuario1(self, obj):
        return obj.username
    def plataforma(self, obj):
        return obj.last_name
    def comentario(self, obj):
        return obj.perfil.comentario

    #get_author.short_description = 'Author'
    #get_author.admin_order_field = 'book__author'

    ordering = ('-date_joined', )
    list_filter = ('perfil__VERIFICACION_2', 'last_name')
    actions = [resetear_torneo, resetear_todo, mail_comienzo_torneo, comenzar_torneo, finalizar_torneo, calcular_puntajes_general, verificar_usuario]


admin.site.unregister(User)
admin.site.register(User, UserAdmin)

0 个答案:

没有答案