我见过许多解决方案,但似乎都没有回答这个问题。
我的用户模型现在正在使用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'
答案 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