(Django) Почему мой логин работает только для таблицы db:auth_user и не работает для другой таблицы:myapp_user?

Простите за плохой английский!

В моем проекте есть функция входа в систему, например:

from django.contrib.auth.forms import AuthenticationForm
from django.contrib import auth
from django.http import HttpResponseRedirect
from django.shortcuts import render 

def log_in(request):
    form = AuthenticationForm(request.POST)
    if request.method == "POST":
        form = AuthenticationForm(data=request.POST)
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = auth.authenticate(request,username=username,password=password)
        if user is not None and user.is_active:
            auth.login(request,user)
            return HttpResponseRedirect('/index')
    context = {
    'form': form,
    }   
    return render(request, 'login.html', context)

Эта функция может работать для любых учетных записей, которые сохраняются в таблице базы данных:auth_user, но не может работать для моего класса User:

from django.contrib.auth.models import (
     BaseUserManager, AbstractBaseUser  )

class User(AbstractBaseUser):
        username = models.CharField(unique=True,max_length=20,default="")
        email = models.EmailField()
        date_of_birth = models.DateField()
        date_joined = models.DateTimeField(auto_now_add=True)
        last_login = models.DateTimeField(auto_now=True)
        is_admin = models.BooleanField(default=False)
        is_active = models.BooleanField(default=True)
        objects = AccountManager()
        USERNAME_FIELD = 'username' #類似主鍵的功用
        REQUIRED_FIELDS = ['email','username'] #必填
    
        def __str__(self):
            return self.email
    
        def is_staff(self):
            return self.is_admin
    
        def has_perm(self, perm, obj=None):
            return self.is_admin
            
        def has_module_perms(self, app_label):
            return self.is_admin

Если я использую страницу регистрации для создания данных новой учетной записи, она сохраняется в таблице:function_user("function" - имя моего приложения), и если я войду в таблицу:auth_user accounts, она перейдет в /index, это правильно, но когда я вхожу в новую учетную запись, она ничего не делает, я действительно уверен, что имя пользователя и пароль уже созданы в таблице:function_user.

register (кажется, работает правильно, данные сохраняются в function_user):

def register(request):
    if request.method == 'POST':
        form = RegisterForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/index')
    else:
        form = RegisterForm()
        
    context = {'form': form}
    return render(request, 'register.html', context)

База данных enter image description here

Я хочу, чтобы моя вновь созданная учетная запись пользователя (т.е. function_user) могла войти в дополнение к auth_user.

Спасибо, что прочитали.

Добавили ли вы пользовательскую модель пользователя в файл settings.py

добавьте следующую строку в settings.py

замените users на имя вашего приложения, в котором присутствует ваша пользовательская модель User

AUTH_USER_MODEL = 'users.User'
Вернуться на верх