2011-11-13 144 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;或者換句話說,你可以但只有一部分功能可以工作 - 更改現有密碼可能會起作用,但添加新用戶會引發異常。