Пароль аутентификации Django возвращает False

Я пытаюсь создать систему аутентификации с помощью Django с пользовательским бэкендом и классом пользователя, но каждый раз, когда я пытаюсь аутентифицироваться с существующим пользователем и паролем в моей базе данных Postgresql, функция check_password() всегда возвращает False и я не могу продолжить.

Вот код для UserBackend на backends.py

from django.contrib.auth.backends import ModelBackend
from .models import user

class UserBackend(ModelBackend):
    def authenticate(self, **kwargs):
        username = kwargs['username']
        password = kwargs['password']

        print('user: ', username)
        print('pass: ', password)
        #try:
        user_ = user.objects.get(username=username)
    
        try:
            print(user_.check_password(password))
            if user_.check_password(password) is True:  #Here check_password() is always false
                return user_
        except user.DoesNotExist:
            pass

        def get_user(self, user_id):
            try:
                return user.objects.get(pk=user_id)
            except user.DoesNotExist:
                return None

views.py

def signin(request):
now = datetime.now()
if request.method == 'POST':
    username = request.POST['username']
    password = request.POST['password']

    user = UserBackend.authenticate(ModelBackend(),username=username, password=password)

    if user is not None:
        #auth.login(request, user)
        return redirect('/index')    
    else:
        messages.info(request, 'invalid username or password')
        return redirect("/signin")
else:
    return render(request,'signin.html')

return render(request, 'signin.html')

models.py

class user(AbstractBaseUser):
    id = models.AutoField(primary_key=True)
    username = models.TextField()
    real_name = models.TextField()
    email = models.TextField()
    password = models.TextField()
    description = models.TextField()
    last_login = models.DateField()
    created_at = models.DateField()
    class Meta:
        managed = False
        db_table = 'user'

    def __str__(self) -> str:
        return self.username

что я делаю не так?

Вернуться на верх