Python Can';t在Django中更新用户模型详细信息后登录
我有一个从AbstractBaseUser扩展而来的用户模型,我在下面展示了它Python Can';t在Django中更新用户模型详细信息后登录,python,django,django-rest-framework,django-rest-auth,Python,Django,Django Rest Framework,Django Rest Auth,我有一个从AbstractBaseUser扩展而来的用户模型,我在下面展示了它 class User(AbstractBaseUser,PermissionsMixin): email = models.EmailField(verbose_name='email', max_length=80, unique=True) username = models.CharField(max_length=30, unique=True) first_name = models
class User(AbstractBaseUser,PermissionsMixin):
email = models.EmailField(verbose_name='email', max_length=80, unique=True)
username = models.CharField(max_length=30, unique=True)
first_name = models.CharField(max_length=100,null=True)
last_name = models.CharField(max_length=100,null=True)
phone_no = models.CharField(max_length=12, null=True)
date_joined = models.DateField(
verbose_name='date joined', auto_now_add=True)
last_login = models.DateField(verbose_name='last login', auto_now=True)
is_admin = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
is_teacher = models.BooleanField(default=False)
address = models.CharField(max_length=500, null=True, blank=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username']
objects = MyAccountManager()
def __str__(self):
return self.email
# def has_perm(self, perm, obj=None):
# return self.is_admin
def has_module_perms(self, app_label):
return True
另外,我需要使用下面提到的视图更新用户的详细信息
class UpdateUser(RetrieveUpdateAPIView):
permission_classes = (IsAuthenticated,)
serializer_class = UserSerializerAPI
queryset = User.objects.all()
更改用户模型详细信息后,我无法登录。我正在使用rest身份验证登录URL登录用户。当我尝试登录时,它会给我一个错误提示
{
“非字段错误”:[
“无法使用提供的凭据登录。”
]
}
原因是什么
class UpdateUser(RetrieveUpdateAPIView):
permission_classes = (IsAuthenticated,)
serializer_class = UserSerializerAPI
queryset = User.objects.all()
def perform_update(self, serializer):
instance = serializer.save()
instance.set_password(instance.password)
instance.save()
这就是我解决问题的方法您是否将
AUTH_USER\u MODEL
设置为自定义USER
MODEL是的,在更改用户型号详细信息后,我已经这样做了,
您更改了什么?你能仔细检查一下数据库中的值吗?根据USERNAME\u字段
,您正在使用电子邮件
作为用户名,因此请务必使用该用户名登录。我检查了数据库,因此在更新用户模型后发现我的密码未加密。我在更新视图中编写了一个perform_update方法