Django用户模型用户名(唯一= False)

时间:2018-02-20 09:29:05

标签: python django

我见过许多解决方案,但似乎都没有回答这个问题。

我的用户模型现在正在使用AbstractUser。有没有办法制作用户名(unique = False)

因为我想允许用户能够复制相同的用户名,因为我正在使用的登录是通过电子邮件地址和密码

以下是我尝试但无法使用的代码。

代码:

class MyUser(AbstractUser):
    username = models.CharField(max_length=30, unique=False)

错误:

customuser.MyUser: (auth.E003) 'MyUser.username' must be unique because it is named as the 'USERNAME_FI ELD'

3 个答案:

答案 0 :(得分:1)

尝试将电子邮件指定为包含USERNAME_FIELD属性的用户名字段:

class MyUser(AbstractUser):
    username = models.CharField(max_length=30, unique=False)
    USERNAME_FIELD = 'email'

答案 1 :(得分:0)

class MyUser(AbstractUser):
    username = models.CharField(max_length=30, unique=False)
    email = models.EmailField(max_length=255, unique=True)
    USERNAME_FIELD = 'email'

答案 2 :(得分:0)

如果您使用支持身份验证的自定义后端,则允许使用非唯一的用户名字段。

如果要使用django的默认身份验证后端,则不能使用户名非唯一。

对于自定义后端,您将必须使用get_user(user_id)和authenticate(request,** credentials)方法实现一个类。

您可以在此处的文档中阅读。 https://docs.djangoproject.com/en/2.1/topics/auth/customizing/#specifying-custom-user-model