2013-06-13 5 views
2

Django 1.5 프로젝트에서 AbstractBaseUser에서 확장 한 사용자 정의 사용자 모델을 작성하여 전자 메일 주소를 사용자 이름 대신 기본 키로 만들었습니다.Django의 사용자 정의 사용자 모델로 '비밀번호 변경'기능을 얻는 방법 1.5

django 관리 인터페이스에서 UserAdmin에 대한 암호 변경 기능을 어떻게 얻을 수 있습니까? 나는 CustomUserAdmin (대답은 Using custom User admin breaks change password form in Django's admin에서 제안 훨씬처럼)라는 클래스와 UserAdmin 확장 시도,하지만 난

CustomUserAdmin.list_display[0], 'username' is not a callable or an attribute of 'CustomUserAdmin' or found in the model 'User'. 

나는 기본적으로 제외하고는 기본 관리 인터페이스 에게 내가 원하는 암호 필드를 (원하는 다음과 같은 오류 메시지를 얻을 UserAdmin에서 가져옴).

어떻게하면됩니까?

답변

0

사용자 정의 사용자 모델에 '사용자 이름'입력란이없는 것 같습니다. 그리고 CustomUserAdmin은 'username'필드가 있다고 가정하는 UserAdmin을 확장하기 때문에; 이 오류가 발생합니다.

사용자 정의 모델에 '사용자 이름'필드를 추가하고 '이메일'필드와 동일한 값을 저장하는 것이 좋습니다.

또는 'username'을 사용하는 UserAdmin 클래스의 모든 속성을 무시하십시오. 예 :

class CustomUserAdmin(UserAdmin): 
    list_display = ['email', 'first_name'.....] 
+0

내가 오히려 (1) UserAdmin 또는 (2) 가짜 사용자 이름 필드에 사용자 이름 가정 없애있는 해키 솔루션을하지 않을 것입니다. 불필요한 사용자 이름 필드를 다루고 싶지 않았기 때문에 BaseUser 위로 AbstractBaseUser를 확장하는 데 어려움을 겪었던 큰 이유가 있습니다. – fangsterr

+0

@fangsterr UserAdmin 클래스는 django auth 사용자 모델을 기반으로합니다. 이제 사용자 인증 모델과는 다른 사용자 정의 모델이 있습니다. 그러나 우리는 CustomUserAdmin이 UserAdmin의 하위 클래스가되기를 원합니다. 이를 달성하는 유일한 방법은 우리의 구조에 맞게 UserAdmin의 속성/기능을 재정의하는 것입니다. 이 작업을 원하지 않으면 CustomUserAdmin이 해당 기능을 다시 구현해야합니다. – Sudipta

관련 문제