【发布时间】:2017-12-06 07:46:03
【问题描述】:
我正在使用 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})
使用此设置,我可以通过电子邮件和用户名让用户登录。但是,问题在于超级用户能够在 Django Admin 中编辑/删除“电子邮件”。我不想要这样的行为。 (但尝试删除用户名会出现“必填字段”错误。)
我现在的问题是, 如何防止管理员编辑用户信息。即使“用户名”和“电子邮件”字段为只读字段。
【问题讨论】:
-
您有
User的自定义模型管理员吗?
标签: python django django-allauth