使用rest-framework和django-allauth设置标志来删除登录和注册所需的用户名:
#settings.py
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = False
但我仍然在管理员的注册表单中看到用户名字段,在用户列表中看到用户名字段(空用户没有用户名)。
如何删除它?
答案 0 :(得分:1)
在您的 settings.py
文件中:
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_USER_MODEL_USERNAME_FIELD = None
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_USERNAME_REQUIRED = False
https://django-allauth.readthedocs.io/en/latest/advanced.html#custom-user-models
答案 1 :(得分:0)
您需要定义自己的自定义用户模型,以便从Django admin中删除它。如果您可以使用Django的用户模型和用户名,但希望将其从序列化程序(DRF)中删除,您可以定义自己的自定义登录并注册序列化程序并删除用户名。
答案 2 :(得分:0)
您也可以按照SO答案中的说明覆盖基本管理模板:
How to override and extend basic Django admin templates?
答案 3 :(得分:0)
基本上这涉及创建自定义用户模型并通知Django和Django Admin部分应该使用它而不是标准模型。
您的课程将如下所示。
class User(AbstractUser):
username = None
email = models.EmailField(_('email address'), unique=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
可以找到实施细节here
答案 4 :(得分:0)
就我而言,我只是在此处输入“用户名=无”。然后它消失了。 完整代码:
from django.utils.translation import gettext_lazy as _
class LectureUser(AbstractUser):
username = None
identifier = models.IntegerField(primary_key=True)
email = models.EmailField(_('email address'))
USERNAME_FIELD = 'identifier' # Set to the unique identifier we define.
objects = CustomUserManager()
希望这会有所帮助:-)