Python Can';t在Django中更新用户模型详细信息后登录

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

我有一个从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.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方法