Невозможно войти в админпанель django, создав пользовательскую модель пользователя

Я создал пользовательскую модель пользователя и вы можете войти в систему, используя Email Id. Это для фреймворка django rest. На панели администратора выдает ошибку Пожалуйста, введите правильный email и пароль для учетной записи сотрудника. Обратите внимание, что оба поля могут быть чувствительны к регистру. но я ввожу правильный email id и пароль.

is_active и is_staff установлены в True.

Я создал суперпользователя командой: python manage.py createsuperuser

is_active,is_staff is True, как я проверил в SQLite viewer, это 1 в поле staff и active.

models.py

from django.db import models
from django.contrib.auth.models import BaseUserManager,AbstractBaseUser,PermissionsMixin

from rest_framework_simplejwt.tokens import RefreshToken


class UserManager(BaseUserManager):
    def create_user(self,email,mobile,password=None):
        if mobile is None:
            raise TypeError("Please is enter mobile number")
        
        if email is None:
            raise TypeError("Please is enter Email Address")

        user = self.model(mobile=mobile,email=self.normalize_email(email))

        user.set_password(password)
        user.is_active = True
        user.save()
        return user

    
    # superuser or admin
    def create_superuser(self,mobile,email,password=None):

        if password is None:
            raise TypeError("Password should not be none")

        
        # how user should be created
        user = self.create_user(mobile,email,password)
        user.is_superuser = True
        user.is_admin = True
        user.is_active = True
        user.is_staff = True
        user.save()
        return user


class User(AbstractBaseUser,PermissionsMixin):
    email = models.EmailField(unique=True,db_index=True)
    mobile = models.CharField(max_length=10,unique=True,db_index=True)
    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    objects = UserManager()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['mobile',]

    def __str__(self):
        return self.email

    def tokens(self):
        refresh = RefreshToken.for_user(self)
        return {
            'refresh':str(refresh),
            'access':str(refresh.access_token)
        }

settings.py

AUTH_USER_MODEL = 'accounts.User'

serializers.py

class RegisterUserSerializer(serializers.ModelSerializer):
    password = serializers.CharField(max_length=128,min_length=6,write_only=True)


    class Meta:
        model = User
        fields = ['mobile','email','password']

    def validate(self,attrs):
        email = attrs.get('email','')
        mobile = attrs.get('mobile','')

        if not mobile.isnumeric():
            raise serializers.ValidationError('Please enter valid mobile number')
        return attrs
    

    def create(self,validated_data):
        return User.objects.create_user(**validated_data)

class LoginUserSerializer(serializers.ModelSerializer):
    email = serializers.EmailField(max_length=255,min_length=10)
    password = serializers.CharField(max_length=128,min_length=6,write_only=True)
    mobile = serializers.CharField(max_length=10,read_only=True)
    tokens = serializers.SerializerMethodField()

    def get_tokens(self,obj):
        user = User.objects.get(email=obj['email'])

        return {
            'refresh': user.tokens()['refresh'], #tokens() comes from function in models.py
            'access': user.tokens()['access']
        }

    class Meta:
        model = User
        fields = ['email','password','mobile','tokens']

    def validate(self, attrs):
        email = attrs.get('email','')
        password = attrs.get('password','')
        user = auth.authenticate(email=email,password=password)
        if not user:
            raise AuthenticationFailed("User with email id or mobile not registered.")

        return {
            'email':user.email,
            'mobile':user.mobile,
            'tokens':user.tokens,
        }

views.py

@swagger_auto_schema(method='POST', request_body=RegisterUserSerializer)
@api_view(['POST'])
@permission_classes([permissions.AllowAny])
def registerUserView(request):
    data = request.data

    serializer = RegisterUserSerializer(data=data)
    if serializer.is_valid():
        serializer.save()

        return Response(serializer.data,status=status.HTTP_201_CREATED)

    return Response(serializer.errors,status = status.HTTP_400_BAD_REQUEST)


@swagger_auto_schema(method='POST', request_body=LoginUserSerializer)
@api_view(['POST'])
@permission_classes([permissions.AllowAny])
def loginUserView(request):
    data = request.data
    serializer = LoginUserSerializer(data=data)

    if serializer.is_valid():
        return Response(serializer.data,status=status.HTTP_200_OK)

    return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)

Я не могу понять, где я допускаю ошибку. Пожалуйста, помогите мне с этим. Спасибо.

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