I am new in Django. I have a problem with authenticate(). It only authenticates the superuser. For any other user it returns None. I use "user_id" field instead of "username" field. I don't want to use Django forms.
this is my models.py.
models.py
class UserProfileManager(BaseUserManager):
    def create_user(self, user_id, first_name, last_name, user_class, password = None):
        user = self.model(first_name = first_name, last_name = last_name , user_id = user_id, user_class = user_class)
        user.set_password(password)
        user.save(using = self._db)
        return user
    def create_superuser(self, user_id, first_name, last_name , password = None):
        user = self.create_user(user_id, first_name, last_name, None, password = password)
        user.is_superuser = True
        user.is_staff = True
        user.save(using = self._db)
        return user
class UserProfile(AbstractBaseUser, PermissionsMixin):
    first_name = models.CharField(max_length = 255)
    last_name = models.CharField(max_length = 255)
    user_id = models.IntegerField(unique = True, null = True)
    user_class = models.ForeignKey(Class, on_delete = models.PROTECT, default = None, unique = False, null = True)
    is_active = models.BooleanField(default = True)
    is_staff = models.BooleanField( default = False)
    objects = UserProfileManager()
    USERNAME_FIELD = 'user_id'
    # REQUIRED_FIELDS = ['first_name', 'last_name']
    def get_short_name(self):
        return self.first_name
    def get_full_name(self):
        return '{} {}'.format(self.first_name, self.last_name)
    def __str__(self):
        return '{} {}'.format(self.first_name, self.last_name)
this is my views.py.
views.py
class HomeView(TemplateView):
    template_name = 'user_profile/home.html'
    def post(self, request, *args, **kwargs):
        if request.method == 'POST':
            user_id = request.POST.get('user_id')
            password = request.POST.get('password')
            print('id :', user_id, '\npassword : ',password)
            user = authenticate(user_id = user_id , password = password)
            print(user)
            if user is not None :
                if user.is_active:
                    login(request,user)
                    return redirect('user_profile:home')
                else:
                    return render(request, 'user_profile/not_active.html')
            else:
                return render(request, 'user_profile/not_valid.html')
        else:
            return render(request, 'user_profile/home.html')
 
    