모델

4

나는 AbstractUser의 상속 모델이 같은있다 : 당신이 완전히 경우 https://docs.djangoproject.com/en/dev/topics/auth/customizing/모델

이에

class Driver(AbstractUser): 
    dni = models.CharField(max_length=8,validators=[validate_dni],unique=True) 
    license = models.CharField(max_length=9,unique=True) 
    birthday = models.DateField() 
    sex = models.CharField(max_length=1, choices=SEX_CHOICES) 
    creation_date = models.DateField(auto_now = True) 

따라 Django의 사용자 모델에 만족하고 에 추가 프로필 정보를 추가하려면 django.contrib.auth.models.AbstractUser의 하위 클래스를 만들고 사용자 정의 프로필 필드를 추가하기 만하면됩니다. 이 클래스는 기본값 사용자의 전체 구현을 추상 모델로 제공합니다.

그러나 내 관리자보기에서 암호 필드는 간단한 텍스트 입력이며 암호는 원시 텍스트로 저장됩니다. AbstractBaseUser로 시도 할 수 있지만 먼저이 문제를 명확히해야합니다. 나는 장고로 시작하고있어, 나는 조금 초보자이다.

감사합니다.

답변

2

암호를 해시하는 함수를 정의해야합니다. 데이터베이스에 직접 저장하는 것이 좋습니다.

class MyForm(forms.ModelForm): 
    ............ 
    def save(self, commit=True): 
     # Save the provided password in hashed format 
     user = super(MyForm, self).save(commit=False) 
     user.set_password(self.cleaned_data["password"]) 
     if commit: 
      user.save() 
     return user 
+0

덕분에, 그것은 작동 :

명시 적으로, 당신의 admin.py 파일에 아래의 요건을 충족하는지 확인하세요. 나는 save 메소드를 편집하거나 "set_password"메소드를 명시 적으로 호출 할 필요가 없다고 생각했다. –

3

실제로 자신의 기능을 정의 할 필요는 없습니다. UserAdmin 클래스를 사용하여 django.contrib.auth.admin에서 등록하면 사용할 수 있습니다.

from django.contrib.auth.admin import UserAdmin 
admin.site.register(CustomUserModel, UserAdmin)