如何删除django admin上的注册表单中的用户名字段?

时间:2016-03-18 21:14:09

标签: python django django-rest-framework admin django-allauth

使用rest-framework和django-allauth设置标志来删除登录和注册所需的用户名:

#settings.py
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = False

但我仍然在管理员的注册表单中看到用户名字段,在用户列表中看到用户名字段(空用户没有用户名)。

如何删除它?

5 个答案:

答案 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()

希望这会有所帮助:-)