사용자 가입 및 로그인 용도로 django-allauth를 사용하고 있습니다. 사용자는 사용자 이름과 이메일을 사용하여 로그인 할 수 있습니다.수퍼 유저가 장고 관리자에서 사용자 이메일을 삭제/제거/편집하지 못하게합니다.
# settings.py
# Custom User Model
AUTH_USER_MODEL = 'users.User'
# ask for either username or email during login
ACCOUNT_AUTHENTICATION_METHOD = 'username_email'
# Set Email field as required during signup
ACCOUNT_EMAIL_REQUIRED = True
# Set email versification necessary before creating account
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
# Don't ask for username while signing up.
# Users can later edit/change username in their profile.
# If username is not set, use email to log in.
ACCOUNT_USERNAME_REQUIRED = False
# Login the user after email-confirmations
ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION = True
나는 그림과 같이 사용자 정의 사용자 모델을 구현하는 사용자 앱을 보유하고 있습니다.
# users/models.py
class User(AbstractUser):
name = models.CharField(blank=True, max_length=255)
def __str__(self):
return self.username
def get_absolute_url(self):
return reverse('users:detail', kwargs={'username': self.username})
이 설정을 사용하여 이메일과 사용자 이름을 통해 사용자 로그인을 할 수 있습니다. 그러나 문제는 수퍼 유저가 장고 관리자에서 '이메일'을 편집/제거 할 수 있다는 사실입니다. 나는 그러한 행동을 원하지 않는다. (사용자 이름을 제거하려고하면 "필드가 필요합니다"오류가 발생합니다.)
내 질문은 지금 사용자 정보를 편집하는 것을 방지하려면 어떻게해야합니까? 즉 '사용자 이름'및 '전자 메일'읽기 전용 필드를 만듭니다.
당신이'User'에 대한 사용자 정의 모델 관리자가 있습니까 추가? – cezar