2011-11-13 2 views
6

내가하여 사용자 정의 사용자 관리자를 사용하고 장고의 관리자의 비밀번호 양식을 변경사용하여 사용자 정의 사용자 관리 나누기

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

UserAdmindjango.contrib.auth.admin은 비밀번호 변경 페이지를 포함하여 많은 기능을 구현합니다. 당신이 그 기능을 직접 다시 구현하려는 경우가 아니면

당신의 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

이 코드는 저에게는 효과적이지만 exclude = ('is_superuser', 'user_permissions')는이 코드를 사용합니다. – wenbert

+1

@wenbert'fieldsets'을 오버라이드해야합니다. is_superuser와 user_permissions는 모두'UserAdmin.fieldsets'에 포함되어 있습니다. 필드 세트에 필드를 포함시킨 다음 제외시킬 수 없습니다. – Alasdair

1

또한 : 당신이 AbstractBaseUser에서 상속하는 경우

으로 the docs 당 기본 UserAdmin을 사용할 수 없습니다; 또는 다른 방법으로는 기능의 하위 집합 만 작동 할 수 있습니다. 기존 암호를 변경하면 작동하지만 새 사용자를 추가하면 예외가 발생합니다.