【问题标题】:Using custom User admin breaks change password form in Django's admin在 Django 的管理员中使用自定义用户管理员会破坏更改密码表单
【发布时间】:2011-11-13 04:39:53
【问题描述】:

我正在使用自定义用户管理员:

class CustomUserAdmin(admin.ModelAdmin):
    model = User
    ...
admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)

但是当我尝试通过管理页面更改密码时,我得到了 404。

user object with primary key u'4/password' does not exist.

恢复到默认用户管理员工作正常。

【问题讨论】:

    标签: django django-admin


    【解决方案1】:

    django.contrib.auth.admin 中的默认UserAdmin 实现了很多功能,包括更改密码页面。

    您的CustomUserAdmin 应该继承UserAdmin 而不是admin.ModelAdmin,除非您想自己重新实现该功能。

    class CustomUserAdmin(UserAdmin):
        # as an example, this custom user admin orders users by email address
        ordering = ('email',)
    
    admin.site.unregister(User)
    admin.site.register(User, CustomUserAdmin)
    

    【讨论】:

    • 这对我有用,但是有这个代码:exclude = ('is_superuser', 'user_permissions') 会破坏它。
    • @wenbert 你需要覆盖fieldsets。 is_superuser 和 user_permissions 都包含在UserAdmin.fieldsets 中。您不能在字段集中包含字段然后将其排除。
    • 正是我想要的!非常感谢!
    【解决方案2】:

    还有:

    根据the docs,如果您从 AbstractBaseUser 继承,则不能使用默认 UserAdmin;或者,换一种说法,您可以,但只有部分功能可以工作 - 更改现有密码可能有效,但添加新用户会引发异常。

    【讨论】:

      猜你喜欢
      • 2011-09-09
      • 1970-01-01
      • 1970-01-01
      • 2021-10-18
      • 1970-01-01
      • 1970-01-01
      • 2013-03-09
      • 1970-01-01
      • 2019-04-25
      相关资源
      最近更新 更多