2011-11-13 95 views
6

我使用的是自定义的用户管理方式:使用自定义用户管理符更改密码形式Django管理

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. 

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

回答

16

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) 
+0

这对我有用,但有这个代码:排除=('is_superuser','user_permissions')打破它。 – wenbert

+1

@wenbert你需要重写'fieldsets'。 'UserAdmin.fieldsets'中包含is_superuser和user_permissions。您无法在字段集中包含字段,然后将其排除。 – Alasdair

1

另外:

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