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

Fra*_*eit 6 python django admin django-rest-framework django-allauth

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

#settings.py
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = False
Run Code Online (Sandbox Code Playgroud)

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

我怎样才能删除它?

小智 7

本质上,这涉及创建自定义用户模型并通知 Django 和 Django Admin 部分应该使用它而不是标准模型。

您的类将如下所示。

class User(AbstractUser):
    username = None
    email = models.EmailField(_('email address'), unique=True)
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []
Run Code Online (Sandbox Code Playgroud)

实现的细节可以在这里找到

  • 请注意,这个答案并不完整。答案中提到的文章中缺少“CustomUserManager”的实现 https://www.fomfus.com/articles/how-to-use-email-as-username-for-django-authentication-removing -用户名/。您可以编辑您的答案以包含该内容吗? (2认同)

Rob*_*ses 2

您需要定义自己的自定义用户模型才能将其从 Django 管理中删除。如果您可以使用 Django 的用户模型和用户名,但希望将其从序列化器 (DRF) 中删除,您可以定义自己的自定义登录并注册序列化器并在那里删除用户名。